2015-11-11 54 views
0

我有一張表,其中包含一系列代碼的所有屬性信息。一個屬性代碼被設置爲只保存某種數據類型。這些包括數字,自由文本和存儲列表中的下拉值。SQL驗證屬性 - 不同的數據類型

我創建了一個包含所有屬性代碼及其允許值的表格。我試圖想出一個基於驗證表中的值驗證每個代碼的每個屬性的查詢。

我試圖遠離遊標,因爲有大量的代碼需要檢查,我知道遊標不能快速執行大量的行。數據表的

實施例: enter image description here

驗證表的示例: enter image description here

你會從它們具有相應LIST_CODE並允許LIST_VALUE列表數據類型通知。

+0

如何在檢查函數中使用檢查約束? – CPMunich

+0

嗨@CPMunich。我不熟悉約束和檢查函數。你能給我提供一個基於上述數據的例子嗎? – psycho

+1

當您在等待時,您可以嘗試使用Google搜索「SQL SERVER CHECK CONSTRAINT示例」。 –

回答

1

,而我又讀了你的問題,你可以做到以下幾點:

  1. 在驗證表你不需要的屬性NUMERIC_ATTR,FREE_TEXT_ATTR和FLOAT_ATTR

您simmply聲明你的數據中的列 - 表爲int,nvarchar(300)和float。數據類型也是一個約束,SQL-Server注意只有值可以存儲在數據類型允許的列中。

您可以對屬性0_OR_1執行相同操作。只需使用數據表中的數據類型位。如果你不能使用位以任何理由和使用TINYINT您可以添加一個檢查約束,只允許值0或1:

ALTER TABLE DataTable 
ADD CONSTRAINT CK_allow_only_0_or_1 
CHECK ([0_OR_1_ATTR] = 0 OR [0_OR_1_ATTR] = 1); 
  • 使用外鍵約束爲您的下拉 您可以創建一個ForeignKey約束存儲只允許值的下拉

    ALTER TABLE數據表 ADD CONSTRAINT FK_DropDownElements 外鍵(DROPDOWN_ATTR) 參考ValidationTable(LIST_VALUE);