【问题标题】:CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP in mssql?CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP 在 mssql 中?
【发布时间】:2016-05-30 11:50:16
【问题描述】:

我在这里尝试在 mssql 中使用 CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP。 这里 getdate() 可用。如何在 sql 中使用当前日期自动更新日期重写。

我正在尝试更新的代码:

  CREATE TABLE XXXXX
    ( fid int(11) NOT NULL AUTO_INCREMENT,
     Name varchar(100) NOT NULL, 
    status varchar(4) DEFAULT 'yes',
     fdate timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP  
 ON UPDATE CURRENT_TIMESTAMP, PRIMARY KEY (fid) 
    )

【问题讨论】:

  • 你能发布一些关于你正在尝试的示例代码
  • CREATE TABLE XXXXX(fid int(11) NOT NULL AUTO_INCREMENT, Name varchar(100) NOT NULL, status varchar(4) DEFAULT 'yes', fdate timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP, PRIMARY键(fid))
  • 这里我正在尝试将此查询转换为 sql,但更新时在 sql 中不可用,对吗?
  • 我建议在更新此表中的任何行更新日期字段时创建触发器
  • SQL Server 中没有 ON UPDATE ..... 子句 - 如果要在更新行的情况下更新列的值,则需要在该表上使用 AFTER UPDATE 触发器

标签: sql sql-server sql-server-2008 sql-server-2012


【解决方案1】:

创建数据库

 CREATE TABLE XXXXX
( 
    fid int NOT NULL IDENTITY PRIMARY KEY,
    Name varchar(100) NOT NULL, 
    status varchar(4) DEFAULT 'yes',
    fdate datetime NOT NULL DEFAULT getdate() 
)

创建触发器

CREATE TRIGGER Update_fdate
   ON  XXXXX
   AFTER UPDATE
AS 
BEGIN
    SET NOCOUNT ON;
    UPDATE XXXXX
    SET [fdate] = GETDATE()
    WHERE fid IN (SELECT fid FROM Inserted)
END

现在如果有人更新它就会更新...

如果您想为空,只需更改为 NULL 并删除 DEFAULT 值

【讨论】:

    猜你喜欢
    • 2011-09-29
    • 2017-04-26
    • 2011-07-31
    • 1970-01-01
    • 2014-03-16
    • 1970-01-01
    • 2012-01-01
    • 2016-10-23
    • 2015-10-28
    相关资源
    最近更新 更多