检查information_schema.columns的数据

时间:2012-04-03 23:19:37

标签: sql-server sql-server-2008

我需要验证下表中的数据。 (表M的插入和更新触发器中的更新:

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列中的列中。

1 个答案:

答案 0 :(得分:1)

感谢您澄清您的问题。没有内置的功能或程序,所以你可能需要自己编写。一种方法是尝试将CAST值设置为与列相同的数据类型。如果您收到转化错误,则表示INSERT会失败。

但是,实际上没有简单可靠的方法,因为即使该值与数据类型兼容,表上也可能存在CHECK约束或触发器,导致其因某些其他原因而无法插入。并且由于您将所有值存储为字符串,因此总是存在潜在的问题,例如转换为datetime对您有效,但由于语言或日期格式选项不同而导致其他人失败。