2014-02-21 28 views
0

我有了一個值列和表名列的表。我試圖做一個CHECK約束,確保值列中的值存在於TableName中指定的表中。的SQL Server確保一個值在表中存在指定

我們不想爲每個表名不同的表,因爲它們都需要配合回一個表,會有成千上萬種不同的可能值的表名。

任何想法如何做到這一點?

示例數據:

INSERT INTO [Propagation].[AgencyEntityBroadcast](
EntityID, AgencyID, ReferenceTableName, ReferenceTableSchemaName) 
VALUES('DF298C2D-D960-4F32-A071-685CCAE9B573', '0BDFFBD6-5502-4392-B67D-86B477954186', 'AgencyVehicle', 'Resource') 

所以我想確保價值「DF298C2D-D960-4F32-A071-685CCAE9B573」在[資源]主鍵列中存在[AgencyVehicle表。

+0

你能舉一些例子說明數據? –

+0

你能帶有示例數據,如果值不和不存在請期望的結果擴大? – Mike

+3

當有人發出一個刪除從表A中包含值V一排,並以某種方式要求值應發生什麼情況?異常?交易失敗? –

回答

0

你不需要在這裏檢查約束,你需要一個外鍵約束這裏是這樣的....

ALTER TABLE [Propagation].[AgencyEntityBroadcast] 
ADD CONSTRAINT fk_EntityID FOREIGN KEY (EntityID) 
REFERENCES [Resource].[AgencyVehicle](PK_Column_Name) 
+0

除表名可能是「AgencyFacility」或「AgencyMedication」 ..等等,因此必須是做一個參考文獻的「AgencyVehicle」或「AgencyFacility」一鍵..等 – Ranger1230

相關問題