Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/sql/81.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
mssql中的约束_Sql_Sql Server 2008_Entity Framework 4_Constraints - Fatal编程技术网

mssql中的约束

mssql中的约束,sql,sql-server-2008,entity-framework-4,constraints,Sql,Sql Server 2008,Entity Framework 4,Constraints,我们有表Person(Id,Name,Type)和Role(Id,Name)以及绑定M:N表Person\u-Role(Person\u-Id,Role\u-Id),意思是“一个人可以有一组角色” 我们所要做的就是在MS SQL 2008 R2中有一个唯一的约束,该约束保持 (Person.Name、Person.Type、Person.SetOfRoles)。也就是说,(杰克,1,{A,B})和(杰克,1,{B})不是两面派 如果我们能使用Oracle的预插入触发器,它将解决所有问题 重要更新

我们有表
Person(Id,Name,Type)
Role(Id,Name
)以及绑定
M:N
Person\u-Role(Person\u-Id,Role\u-Id)
,意思是“一个人可以有一组角色”

我们所要做的就是在MS SQL 2008 R2中有一个唯一的约束,该约束保持

(Person.Name、Person.Type、Person.SetOfRoles)
。也就是说,
(杰克,1,{A,B})
(杰克,1,{B})
不是两面派

如果我们能使用Oracle的预插入触发器,它将解决所有问题

重要更新:我们在实体框架中使用MS SQL,并且没有确切的insert SQL命令。

使用“而不是insert”触发器
这里的示例:

您可以在Sql Server中使用而不是触发器

CREATE TRIGGER InsteadTrigger on Role
INSTEAD OF INSERT
AS
BEGIN
  INSERT INTO Role
       -- Your logic goes here
       FROM inserted
END
GO

很好,谢谢,但是我们使用MS SQL和实体框架,我们没有确切的插入SQL。然后呢???您知道表的结构,所以您知道插入的
表是什么样子的。你自己说过你可以在甲骨文中做到。或者使用一个存储的proc,它获取所有数据并包含逻辑。