【问题标题】:Syntax error in SQL Server on altering table [duplicate]更改表时 SQL Server 中的语法错误 [重复]
【发布时间】:2016-12-20 17:21:51
【问题描述】:
ALTER TABLE [BlaBla] 
  ADD TimeStamp TIMESTAMP NOT NULL 
      DEFAULT CURRENT_TIMESTAMP 
      ON UPDATE CURRENT_TIMESTAMP

我遇到以下错误

  • ON 附近的语法不正确
  • CURRENT_TIMESTAMP 附近的语法不正确

谁能帮我解决这个问题?

【问题讨论】:

  • 如果你的表没有任何记录 ALTER TABLE [BlaBla] ADD TimeStamp TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP..
  • 首先,SQL Server 中的TIMESTAMP 数据类型与日期和时间完全没有关系 - 因此,您不能 定义默认值CURRENT_TIMESTAMP。如果你想记录当前的日期和时间,你需要使用DATE(如果你只对日期感兴趣,没有时间),或者DATETIME2(n)作为日期和时间。而且您不能定义 ON UPDATE CURRENT_TIMESTAMP 子句 - 您必须编写一个 trigger 以在更新时更新值
  • 你读过文档吗?你是从哪里得出这种说法的?你想做什么?
  • 对不起,我问这个问题是因为我对 SQL Server 缺乏经验。对不起。感谢您的宝贵时间。

标签: sql sql-server


【解决方案1】:

如果表有记录,你不能(直接)给它一个非空列。

您需要第 1 步

  ALTER TABLE [BlaBla] ADD TimeStamp datetime NULL DEFAULT CURRENT_TIMESTAMP

第二步

update [BlaBla] set [TimeStamp] =CURRENT_TIMESTAMP where [TimeStamp] is null

第三步不加不为空

   ALTER TABLE [BlaBla] ADD TimeStamp datetime NOT NULL DEFAULT CURRENT_TIMESTAMP

【讨论】:

  • 它不工作兄弟!
  • 我正在尝试在 MS-SQL Server 上执行它。如果有什么不同的话!
  • 什么不起作用
  • 别担心...我刚开始在 SQL Server 上工作,在 Stackoverflow 上的某处看到了这个语句,事实证明 SQL Server 不支持 ON Update,而且它只是不支持在我尝试使用的上下文中使用时间戳是有意义的。无论如何,谢谢你的时间
猜你喜欢
  • 2020-11-14
  • 1970-01-01
  • 1970-01-01
  • 2023-03-05
  • 1970-01-01
  • 1970-01-01
  • 2016-03-19
  • 1970-01-01
  • 2017-07-07
相关资源
最近更新 更多