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 默认约束的主要内容,如果未能解决你的问题,请参考以下文章

sql中 增加约束,限制取值的命令

表达式不能与默认约束一起使用。在 azure synapse sql 中仅指定默认约束的常量

SQL Server中的六种约束:主键约束,外键约束,唯一约束,非空约束,检查约束,默认约束

SQL Server 删除表的默认值约束

SQL- 约束

SQL 约束