检查哪些列已插入

时间:2020-03-03 16:05:15

标签: sql-server tsql

我想知道,当在表中插入一行时,查询是插入了哪些列,并且没有隐式设置为空。

在这种情况下,常见的解决方案是在触发器中使用update(col)或column_updated()-但文档明确指出: IF UPDATE returns the TRUE value in INSERT actions because the columns have either explicit values or implicit (NULL) values inserted. (与更新的列相同)。

有什么方法可以绘制插入的列?

2 个答案:

答案 0 :(得分:0)

除了运行跟踪和检查查询外,我不这么认为。这实际上是一个很大的问题,因为它已经七个小时没有得到回答。也许我会将其添加到我的一系列面试问题中...

答案 1 :(得分:0)

纠正我,如果我错了。您是否正在考虑做这样的事情?

INSERT INTO 
 TableName ( 
 ColumnName1,ColumnName2
 )
OUTPUT inserted.ColumnName1,inserted.ColumnName2
VALUES
 ('X','Y','Z');

还是类似的东西?

SELECT DISTINCT column_name, table_name
FROM INFORMATION_SCHEMA.COLUMNS
WHERE column_name IS NOT NULL