兩列之間的關係,我想建立列之間(和程序代碼的測試代碼)在相同表一比一的關係。我希望具有相同測試代碼的所有測試具有相同的程序代碼。如何建立一個表
我的第一個想法是使用UDF來查找相同測試代碼對應於兩個不同程序的情況。我瞭解到,這是行不通的,因爲T-SQL只
INSERTS
後檢查在檢查約束的UDF - 不經過UPDATES
why is t-sql allowing me to violate a check constraint that uses a UDP?我的下一個念頭,就是邏輯從UDF移動到檢查約束自己。但是t-sql是說在檢查約束中不允許使用子查詢。這也意味着我不能使用
EXISTS
語法(我認爲它也使用子查詢)。ALTER TABLE [dbo].[mytable] WITH CHECK ADD CONSTRAINT [oneProgramPerTest] CHECK
( (select COUNT(*) from mydb.dbo.mytable u1 inner join mydb.dbo.mytable u2 on u1.testcode=u2.testcode and u1.progcode <> u2.progcode )=0 )
除非有一些方法來執行不具有(1)一個UDF或該邏輯(2)的子查詢然後好像我需要創建的程序代碼的「虛設」表和然後在myTable的測試代碼和虛擬表之間強制執行一對一的關係。這看起來好像是真的是醜陋,所以有一個更好的方法。對?
爲什麼不只是與程序代碼相關聯的測試代碼FK表? – Paparazzi 2013-03-27 20:14:44