2011-08-01 59 views
0

我們有表Person(Id, Name, Type)Role(Id, Name)和一個綁定M:NPerson_Role(Person_Id, Role_Id),這意味着「一個人可以有一組角色」。MS SQL中的約束

所有我們想要做的是在MS SQL 2008 R2 UNIQUE約束持有的

(Person.Name, Person.Type, Person.SetOfRoles)唯一性。那是(Jack, 1, {A,B})(Jack, 1, {B})不是重複。

如果我們可以使用Oracle的預插入觸發器,它將解決所有問題。

重要更新:我們使用MS SQL與實體框架,我們沒有確切的插入SQL命令。

回答

0

您可以在SQL Server使用INSTEAD OF觸發器。

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

很好,謝謝,但我們使用MS SQL與實體框架,我們沒有確切的插入SQL。然後怎樣呢??? – Cartesius00

+0

您知道表格的結構,因此您知道「插入」表格的樣子。你說你自己可以在Oracle中做到這一點。或者使用一個存儲所有數據幷包含邏輯的proc。 –