2012-04-03 61 views
0

我需要驗證下表中的數據。 (更新:M的INSERT和UPDATE觸發器)根據informationschema.columns檢查數據

create table M (Column_Name sysname primary key, FirstValue varchar(8000)) 

該表具有觸發器,確保Column_Name所有值都在(select column_name from information_schema.columns where table_name = 'T')

什麼是最好的方式來保證M.FirstValue可以插入T沒有任何問題。是否有任何第三方功能接受(Value, Data_type, Max_..._length, etc)的參數,其中數據類型信息可由information_schema.columns提供?


**我想確保FirstValue值可以插入到他的名字被存儲在COLUMN_NAME列的列。

+0

你究竟在做什麼?您是否試圖確保FirstValue中的值可以插入名稱存儲在Column_Name列中的列中? – Pondlife 2012-04-04 09:48:33

+0

@Pondlife是的,這正是我想要做的。 – ca9163d9 2012-04-04 14:09:25

回答

1

感謝您澄清您的問題。沒有內置的功能或過程來做到這一點,所以你可能必須自己寫。一種方法是嘗試將CAST的值設置爲與列相同的數據類型。如果出現轉換錯誤,您知道INSERT會失敗。

但是,確實沒有簡單可靠的方法,因爲即使值與數據類型兼容,表上可能存在約束或觸發器,以防止由於其他原因而插入該約束或觸發器。而且,由於您將所有值存儲爲字符串,因此始終存在潛在問題,例如轉換爲日期時間可以正常工作,但因其他語言或日期格式選項而失敗。