日期:2014-05-16  浏览次数:20740 次

jdbc 事务,两条insert语句之间的事务关系
环境:   mysql   ,window,j2se,spring

想实现这样的一个事务

1,保存一条记录a   到表A
2,保存一条记录b   到表B

他们处在一个事务中,但问题是a的主键id是b里的一个not-null,如果在同一个事务中,执行到2的时候,其实1在数据库中也没有保存,所以也没有id的值,那么这时在执行2的时候就会出现not-null的错误?

如何解决这个问题?

------解决方案--------------------
当然了,如果用事务也是可以的,不过就是要注意SQL语句的顺序了!例如:
a中的cola是主键,b中的colc是主键,同时b中的cola是外键,那么插入语句应该这么写:
start transaction;
insert into a(cola,colb) values( "test ", "hello "); -- 第一步必须先执行
insert into b(colc,cola) values( "mysql ", "test "); -- 第二步才执行这个
commit;
------解决方案--------------------
用触发器,或者存储过程