我有2個表 - EmpDetails
& ChangeLog
列約束
EmpDetails
員工的存儲信息 - 它具有ID, Name
等
ChangeLog
用於登錄更改員工詳細信息 - 它有ID, DateOfChange, ChangeDescription
等
我想確保ChangeLog.ID
是包含在EmpDetails.ID
列中的值。
於是,我把使用用戶定義函數的CHECK約束爲ChangeLog.ID
列(UDF中檢查是否存在EmpDetails.ID
ID
與否)
我的問題是 - 如果是一個特定的ID
行從EmpDetails
中刪除,如果在ChangeLog
中有ID
的行,會出現錯誤嗎?
這似乎並非如此...我不明白爲什麼。
那麼,我將如何獲得這樣的功能?我能想到的一種方法是在EmpDetails
上創建刪除操作的觸發器。
對上述問題的其他解決方案?
編輯 - 我試着指定一個外鍵關係。但ChangeLog中的ID不是關鍵,因爲ChangeLog表可以包含同一ID的多個記錄(我的意思是,員工可以多次更改其詳細信息,因此ChangeLog中的相同ID將會有多於一條記錄)。即使在這種情況下,我是否應該能夠指定外鍵關係?
您應該將'EmployeeID INT'添加到您的ChangeLog中,然後引用'ChangeLog.EmployeeID - > EmpDetails.ID' – 2011-02-28 14:31:05
我需要做的是 - 我必須在EmpDetails中指定ID爲'unique'以使其成爲鍵,用於外鍵關係。之前它被標記爲「身份」......(我認爲這會使它成爲關鍵)。在我的情況下,ID + 2個其他列組成主鍵。 – user637563 2011-02-28 15:08:46