【发布时间】:2010-09-27 19:06:51
【问题描述】:
我需要在不知道主键列名称的情况下更新 DateModified 列。
基本上,我有一个简单的更新触发器,如下所示:
CREATE TRIGGER updated_SCHEMA_TABLE
ON [SCHEMA].[TABLE]
AFTER UPDATE AS
BEGIN
SET NOCOUNT ON;
UPDATE [SCHEMA].[TABLE]
SET DateModified = getdate()
WHERE [PRIMARYKEY]
IN (SELECT [PRIMARYKEY]
FROM Inserted)
END
但不知道主键的列名,因为触发器将以编程方式生成 (see this question as to why)。
这可能吗?
【问题讨论】:
-
Y如果 PK 有多于一列,我们的触发器将不起作用。您可以使用 EXISTS() 代替 IN()。
-
您可以使用
INFORMATION_SCHEMA.TABLE_CONSTRAINTS视图和INFORMATION_SCHEMA.KEY_COLUMN_USAGE视图获取PK 列
标签: sql sql-server sql-server-2008 triggers