【问题标题】:Syntax error in SQL RDS server for create tableSQL RDS 服务器中用于创建表的语法错误
【发布时间】:2017-04-26 03:42:12
【问题描述】:

我需要更新 MS SQL 服务器中的创建日期和更新日期列。我正在使用下面的查询来做同样的事情。但是在执行查询时,我收到一个语法错误,提示 “'ON' 附近的语法错误”

CREATE TABLE t1 (
  ts TIMESTAMP DEFAULT CURRENT_TIMESTAMP ,
  dt DATETIME DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP
);

谁能指出我哪里做错了?

【问题讨论】:

  • 你想用这个DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP做什么
  • 如果您想在更新发生时更新 dt 列,触发器是唯一的方法,或者在更新过程中更新该列。
  • 嗯...那个链接是针对MySql的,你把它标记为sql server。它们不是一回事。
  • 我认为您正在寻找计算列,例如 dt as ts
  • 要在 sql server 中完成此操作,您必须使用 datetime 数据类型,然后您需要在表上创建更新触发器。触发器是sql server中处理更新事件的机制。

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


【解决方案1】:

使用PERSISTED COMPUTED COLUMN 来处理日期时间刷新。
或使用UPDATE TRIGGER

我建议使用触发器,因为即使 ROW 没有更新,COMPUTED COLUMN 也可能会被刷新。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-10-16
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-03-14
    • 1970-01-01
    相关资源
    最近更新 更多