我需要创建一个新的 DATETIME
SQL Server 中的列将始终包含创建记录的日期,然后在修改记录时需要自动更新。我听人说我需要一个触发器,这很好,但我不知道怎么写。有人可以帮助使用触发器的语法来完成此操作吗?
在 MySQL 术语中,它应该与此 MySQL 语句完全相同:
ADD `modstamp` timestamp NULL
DEFAULT CURRENT_TIMESTAMP on update CURRENT_TIMESTAMP
这里有一些要求:UPDATE
修改行时设置字段的语句,因为我不控制写入记录的应用程序逻辑。 最佳答案
SQL Server 无法为 UPDATE
定义默认值.
所以你需要添加一个带有默认值的列来插入:
ADD modstamp DATETIME2 NULL DEFAULT GETDATE()
并在该表上添加一个触发器:CREATE TRIGGER tgr_modstamp
ON **TABLENAME**
AFTER UPDATE AS
UPDATE **TABLENAME**
SET ModStamp = GETDATE()
WHERE **ID** IN (SELECT DISTINCT **ID** FROM Inserted)
是的,您需要为每个触发器指定一个标识列。注意:在您不知道应用程序代码的表上插入列时要小心。如果您的应用程序具有没有列定义的 INSERT VALUES 命令,即使在新列上使用默认值,它也会引发错误。
关于sql-server - 需要 SQL Server 中的日期时间列在修改记录时自动更新,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21493178/