SQL 默认约束
Posted
技术标签:
【中文标题】SQL 默认约束【英文标题】:SQL Default Constraint 【发布时间】:2013-07-16 19:10:27 【问题描述】:我有一个包含 2 列 dateRecieved 和 dateDue 的表。我知道如何使 dateNow 列默认显示今天的日期,方法是: 默认获取日期() 然后,用户可以将 dateRecieved 列修改为他们想要的任何日期。
用户修改dateRecieved列后;如何设置 dateDue 列,使其默认显示距 dateRecieved x 天的日期?
我查看了这个答案,但我需要参考另一列。 Need to add constraint: date plus 10 days
有没有办法让 dateRecieved 在 dateRecieved 改变时自动修改它的值? 用户应该能够覆盖这两列中的默认值。
我正在使用 W3 学校的 sql 教程,但它没有,而且我在 *** 上也找不到 http://www.w3schools.com/sql/sql_default.asp
use current date as default value for a column
谢谢
【问题讨论】:
【参考方案1】:因此,当您说“用户修改”时,您指的是更新。
DEFAULT 值仅与 INSERT 语句相关。
确实,您可以通过触发器完成任何您想要的自动更新更改,但作为初学者,我会直接建议您远离触发器。它们很少被正确实施,并且在出现问题时更难以理解。
您想要做的是插入您的行(允许任何默认值“发生”),然后使用您想要的值更新您的行。
【讨论】:
【参考方案2】:听起来您正在寻找的是一个等待更新完成的触发器,然后 dateDue 会自动更新。
这个答案可能会为您指明正确的方向: How to: Create trigger for auto update modified date with SQL Server 2008
【讨论】:
谢谢,这个链接很有用。以上是关于SQL 默认约束的主要内容,如果未能解决你的问题,请参考以下文章
表达式不能与默认约束一起使用。在 azure synapse sql 中仅指定默认约束的常量