事务中的外键约束问题

黄正文 发布于 2013/05/24 16:37
阅读 1K+
收藏 0

这是一个关于事务的问题

当你在这个事务中添加一个groupid到表userGroup中后,并没的提交事务。

也就是说这时userGroup表实际上并没有这个groupid

导致外键约束失败

请问:如果在不提交事务的前提下抑制外键约束。

隐约记得有这么一功能。。。

加载中
0
震秦
震秦

那你的Service设计应该变通一下。

//这个方法不要让他有事务,发生异常向上抛出。这样可以控制主键冲突,或者外键等
function insert(record){
    db.insert(record);
}

//这个方法有事务
@Transaction
function ortherOp(record) {
    //。。。
}

//设计第三个方法。
function method(record) {
    insert();
    ortherOp();
}


//调用时,控制method方法抛出异常就行了

0
逝水fox
逝水fox
记得是无通用的解决方法,要不就保留这个外键约束,你就只能先提交group再做其他操作;或者去掉这个关联改由你的应用自己处理
逝水fox
逝水fox
回复 @wamdy : PgSQL的?好像没有见过MySQL的类似语法哦,关注一下
黄正文
黄正文
SET CONSTRAINTS 这个Mysql 能用么
0
黄正文
黄正文

在会话中,暂时禁用外键约束

SET @@FOREIGN_KEY_CHECKS=".intval($check);

返回顶部
顶部