首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >限制和不采取行动有什么不同?

限制和不采取行动有什么不同?
EN

Stack Overflow用户
提问于 2016-09-05 22:43:20
回答 2查看 6.1K关注 0票数 11

我正试图在列上创建一个FK,现在我正在考虑什么时候应该使用ON DELETE RESTRICT呢?(或ON UPDATE RESTRICT__)。不是和NO ACTION一样吗?

ON DELETE RESTRICT意味着,如果存在引用父行值的子行,则不能删除给定的父行。如果父行没有引用子行,则可以删除该父行。不管怎样,它的定义是外键的默认行为。

我是不是遗漏了什么?

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2016-09-05 22:46:34

他们是等价物。上面甚至写着在文档

NO ACTION:标准SQL中的关键字。在MySQL中,相当于RESTRICT

在有延迟检查的数据库中,它们之间有区别,但是MySQL没有。

票数 11
EN

Stack Overflow用户

发布于 2016-09-05 22:49:02

唯一的区别是当您将约束定义为可推迟的时,最初是延迟的还是最初的直接模式。

NO ACTION:在标准SQL中,not意味着不执行任何操作,也就是说,如果引用表中有相关的外键值,则不允许尝试删除或更新主键值。InnoDB拒绝父表的删除或更新操作。

限制:拒绝父表的删除或更新操作。指定限制(或不执行任何操作)与省略ON、DELETE或ON UPDATE子句相同。(有些数据库系统有延迟检查,任何操作都是延迟检查。在MySQL中,将立即检查外键约束,因此没有任何操作与限制相同。)

请参阅:SQL集对比

票数 7
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/39338474

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档