SQL中外键的默认值是ONDELETE和ONUPDATE是什么?

时间:2010-03-24 10:01:08

标签: sql foreign-keys constraints

我的猜测是默认情况下将外键引用设置为RESTRICT。但是,这有什么标准吗?任何数据库类型的默认值是否相等?或者,为了确保这些值是否应在所有陈述中定义?

2 个答案:

答案 0 :(得分:1)

对于postgres NO ACTION是默认值,对于大多数目的而言,与RESTRICT相同,如here所述。

我建议明确,特别是在DDL中,只要有疑问(然后是一些)。 这有很多原因:

  • 数据定义语句的某些行为可能取决于服务器设置和版本,因此备份和还原可以从显式中受益
  • 如果您尝试将数据从一个RDBMS引擎移动到另一个RDBMS引擎,则可以帮助您捕捉两种方言之间的误解(如果他们不会默默地跳过他们没有得到的部分)
  • 如果你现在甚至考虑模棱两可,试着想象下一个人在几年内维护数据库或你自己 - 在你的创建脚本中明确和评论将会付出一天

答案 1 :(得分:0)

您还应该考虑到并非所有DBMS都承认这些选项(也不允许相同的值)。例如,我认为Oracle不支持onupdate子句