事务中的MySql空约束冲突

事务中的MySql空约束冲突,mysql,database,perl,transactions,Mysql,Database,Perl,Transactions,MySQL中是否有可能以某种方式违反事务中的null约束?我有一些代码在生产中,似乎这样做,因为我不能让它在我的开发机器上工作 代码是用perl编写的。这是示意图上发生的情况: 进行插入以获取id,但并非所有非空值都已设置 制作一个设置所有值的UPDATE语句 在其他表中创建数据(因此它需要在1中获得的id) 提交事务(但我没有找到显式的begin事务) 在我的开发机器上,这在步骤1中失败,因为它抱怨字段没有默认值。我在这两台机器上都有相同的MySQL版本(5.1.66),但生产运行在linux

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

代码是用perl编写的。这是示意图上发生的情况:

  • 进行插入以获取id,但并非所有非空值都已设置
  • 制作一个设置所有值的UPDATE语句
  • 在其他表中创建数据(因此它需要在1中获得的id)
  • 提交事务(但我没有找到显式的begin事务)
  • 在我的开发机器上,这在步骤1中失败,因为它抱怨字段没有默认值。我在这两台机器上都有相同的MySQL版本(5.1.66),但生产运行在linux和本地windows 7上。

    对数据库上执行的多个操作的事务保证,并不是说在使用它时可以违反约束


    解决方案可以是
    insert
    ,您可以通过使用最终值或一些临时值(稍后在事务执行期间使用
    update
    覆盖这些临时值)来不违反约束。

    Ok tnx。现在已经解决了。数据库导出出错,因为它缺少默认值。。。