gpt4 book ai didi

sql-server - 需要 SQL Server 中的日期时间列在修改记录时自动更新

转载 作者:行者123 更新时间:2023-12-02 11:26:50 25 4
gpt4 key购买 nike

我需要创建一个新的 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/

    25 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com