当前位置: 首页 > 面试题库 >

MySQL的默认ON DELETE行为是什么?

咸育
2023-03-14
问题内容

我正在尝试解析MySQL 文档。他们可能会更清楚。他们似乎在说的是,有五种可能性:SET NULL,NO
ACTION,RESTRICT,CASCADE和SET DEFAULT。

NO ACTION和RESTRICT会执行相同的操作(防止破坏FK的任何数据库更改),并且该操作是默认操作,因此,如果省略ON DELETE子句,则表示NO
ACTION(或RESTRICT -是相同的操作)。

SET NULL允许删除父行,将FK设置为​​NULL。

CASCADE删除子行。

SET DEFAULT应该永远不被使用。

这或多或少是正确的吗?


问题答案:

是的,这是正确的:

无操作 :[…] InnoDB拒绝父表的删除或更新操作。

RESTRICT :拒绝父表的删除或更新操作。指定RESTRICT(或NO ACTION)与省略ON DELETE或ON
UPDATE子句相同。[…]

显然NO ACTIONRESTRICT是同义词。此外,由于每当没有ON DELETE / UPDATE子句时都使用它们,因此这是默认行为。

SET NULL :从父表中删除或更新该行,并将子表中的一个或多个外键列设置为NULL。[…]

如果未将外部列声明为NOT NULL(或InnoDB将不允许删除或更新),则将其设置为NULL。

CASCADE :从父表中删除或更新行,并自动删除或更新子表中匹配的行。[…]

级联删除(或更新)外部列。

SET DEFAULT :解析器可以识别此操作,但是InnoDB拒绝包含ON DELETE SET DEFAULT或ON UPDATE SET
DEFAULT子句的表定义。

因此,基本上您不能使用该选项。



 类似资料:
  • 问题内容: 因此,我在过去的一个小时里一直在互联网上浏览,阅读并寻找这个简单问题的明确答案。 MySQL中的默认JOIN是什么? 一样吗 还有一个相关的问题,当您使用“ WHERE”子句时,它与JOIN或INNER JOIN相同吗? 现在,我认为独立的JOIN与使用逗号和WHERE子句相同。 问题答案: 在MySQL中,写不合格的隐含含义。换句话说,in 是可选的。而在MySQL的同义词。为了清楚

  • 问题内容: 像其他旧版MySQL一样,使用根ID和空/无密码全新安装后无法登录MySQL数据库 问题答案: 在Linux上全新安装MySQL-community-server 5.7后,您需要从/var/log/mysqld.log中找到临时密码以root身份登录。 运行以更改新密码 参考:http : //dev.mysql.com/doc/refman/5.7/en/linux-install

  • 问题内容: 当其他选项(例如或)看起来更合理时,将其设置为已编译默认值的原因是什么? 问题答案: 写这封信的那个家伙是一家瑞典公司的联席主管。 出于类似的原因,可能是Microsoft SQL Server的默认语言us_english。

  • 我正在使用JAXP XSLT API(javax.xml.transform)来转换xml文件。 TransformerFactory的javadoc表示:它使用以下有序查找过程来确定要加载的TransformerFactory实现类: 使用javax。xml。使改变TransformerFactory系统属性 使用JRE目录中的属性文件“lib/jaxp.properties”。此配置文件采用标

  • 首先,我的声明是: 我的主要活动获取编号和文本: 我的Activity2应该得到数字和文本: 文本很受欢迎,但数值始终为0。

  • 问题内容: 我有一个使用spring和hibernate的3层应用程序(控制器->服务-> dao),并且事务已应用于服务层。我没有配置OpenSessionInViewInterceptor或OpenSessionInViewFilter,我想知道hibernate会话控制行为。每个交易还是每个请求的开放会话?谢谢! 问题答案: 如果使用,则a 将绑定到当前线程,并在事务结束时通过commit或