0

我需要验证下表中的数据。(更新:在表的插入和更新触发器中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 列中的列中。

4

1 回答 1

1

感谢您澄清您的问题。没有内置的函数或过程可以做到这一点,因此您可能必须自己编写。一种方法是尝试CAST将值设为与列相同的数据类型。如果你得到一个转换错误,你知道一个INSERT会失败。

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

于 2012-04-05T15:08:21.297 回答