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

在MySQL中,我可以将参照完整性检查推迟到提交之前

尤夕
2023-03-14
问题内容

就像这个问题一样,我一直在阅读PoEAA,想知道是否有可能将参照完整性检查推迟到在MySQL中提交之前。

我想在同一提交中插入一堆产品和相关产品时遇到了这个问题。即使在事务中,当我尝试插入related_products联接表时也会遇到约束错误。

如果有帮助,我正在使用PHP PDO进行数据库连接。

我会很感激您能提供的任何帮助。


问题答案:

看来我的答案在这里 …

通常,与MySQL一样,在插入,删除或更新许多行的SQL语句中,InnoDB逐行检查UNIQUE和FOREIGN
KEY约束。在执行外键检查时,InnoDB在必须查看的子记录或父记录上设置共享的行级锁。 InnoDB立即检查外键约束;
该检查不会推迟到事务提交。
根据SQL标准,默认行为应推迟检查。也就是说,仅在处理了整个SQL语句之后才检查约束。在InnoDB实现延迟约束检查之前,某些事情将是不可能的,例如使用外键删除引用自己的记录。

回到绘图板。



 类似资料:
  • 问题内容: 我正在将备份脚本从Shell转换为Python。我的旧脚本的功能之一是通过执行以下操作来检查创建的tarfile的完整性:gzip -t。 在Python中这似乎有些棘手。 似乎唯一的方法是读取tarfile中每个压缩的TarInfo对象。 有没有一种方法可以检查tarfile的完整性,而无需将其提取到磁盘或保留在内存中(完整)? Freenode上#python上的好人建议我应该逐块

  • 我是mySQL的新手,我想在我的数据库中添加一个完整性检查(或约束?对不起,我是意大利人)。让我解释一下:我有两张桌子 numPlaces表示车间所能承受的最大操作次数。我创建了一个触发器,每次在操作中插入一个新记录时,引用到该特定位置的Workshop的numOperations就会增加1。 现在我想做的是:当时,如果我尝试插入一个新记录到Operation,系统必须告诉我不能。基本上, 有没有

  • 问题内容: 我在应用程序中使用Log4J进行日志记录。以前我使用像下面这样的调试调用: 选项1: 但有些链接建议最好先检查一下,例如: 选项2: 所以我的问题是“ 选项2是否会以任何方式提高性能? ”。 因为在任何情况下,Log4J框架都对debugEnabled进行相同的检查。对于选项2,如果我们在单个方法或类中使用多个debug语句,则该框架可能是有益的,在该方法或类中,框架不需要多次调用方法

  • 问题内容: 我们计划使用触发器和需要审计的每个表的单独历史表在数据库中引入简单的审计跟踪。 例如考虑表StudentScore,它只有很少的外键(例如StudentID,CourseID)将其链接到相应的父表(Student&Course)。 如果StudentScore需要审核,我们计划创建审核表StudentScoreHistory- 如果修改了StudentScore中的任何行,我们会将旧行

  • 我目前正在创建一些自定义流,通过会话来回发送一些数据。我注意到在某些情况下(例如,如果一个响应者流有一个session.receive,但在发起者流结束时仍未得到响应),不会抛出异常,一切都很顺利,甚至没有警告日志。有没有办法强制检查发送/接收的完整性?

  • 问题内容: 我正在使用Hibernate 4.0 Final和ojdbc6开发我的Web应用程序。一切正常,除非我尝试插入新的父/子关系。首先,这些是实体: 让我们看看这两种情况: 一名员工已经存在,我尝试向其添加新地址->正常工作。 员工不存在,我尝试创建一个新员工。两种不同的情况: a)我只插入一名雇员(无地址)->可以正常工作。 b)我插入并添加了employee及其地址-> 失败 。我必须