事务中的MySql null约束违规

时间:2014-10-29 08:38:41

标签: mysql database perl transactions

MySQL中是否有可能以某种方式违反事务中的空约束?我有一些生产中的代码似乎这样做,我无法让它在我的开发机器上工作。

代码是用perl编写的。这是示意性的:

  1. 进行INSERT以获取id,但不是所有非null值都已设置。
  2. 创建一个设置所有值的UPDATE语句。
  3. 在其他表中创建数据(因此需要在1中获取的id)。
  4. 提交事务(但我没有找到明确的开始事务)。
  5. 在我的开发机器上,这在步骤1中失败,因为它抱怨没有默认值的字段。我在两台机器上都有相同的MySQL版本(5.1.66),但生产正在linux和本地Windows 7上运行。

1 个答案:

答案 0 :(得分:1)

对数据库执行的若干操作的事务保证atomicity,而不是您在使用时可以违反约束。

解决方案可以是insert,您可以通过使用最终值或某些临时值来违反约束,稍后在执行交易时使用update覆盖这些值。