有一天,我们发现一个表有ModifiedDate
列,但发现没有适当的触发器来实际更新该列。现在我正在尝试编写一个脚本来查找所有具有ModifiedDate
列的表,但没有更新它的触发器。如何找到触发器不存在的所有表格
这是我到目前为止有:
SELECT so.name AS 'TableName', sc.name AS 'ColumnName', tr.name AS 'Trigger'
FROM sys.objects so
INNER JOIN sys.columns sc ON sc.object_id = so.object_id
LEFT JOIN sys.triggers tr ON so.object_id=tr.object_id
WHERE so.type = 'U' AND sc.name LIKE '%ModifiedDate%'
AND tr.type = 'TR'
首先,我想找到所有具有的列和触发器的表。我可以找到ModifiedDate
列的所有表格,但是当我在最后一个过滤器中添加AND tr.type = 'TR'
时,它不会返回任何内容。我查了一下,里面有一些表格,它们都有我正在寻找的列和触发器,所以我希望能看到列表中的那些表格。
您使用'WHERE'将'LEFT OUTER JOIN'转换为'INNER JOIN'。您必须允许“NULL”值或将适当的条件移至“ON”子句。 – HABO
@HABO他加入错误专栏的事实......?他的查询,正确的列名(parent_id)执行他所需要的。 “首先,我想找到所有同时具有列和触发器的表。” –