日期:2014-05-17  浏览次数:20777 次

请问mysql如何实现向多个表同时插入数据?
在一个jsp页面表单上的数据,submit后表单上不同的数据分别同时插入不同的表.
具体表的情况是这样的的,三个表为:
person表,operator表,contact表,三个表的主键为ObjectID,通过ObjectID关联.

假如只设置了person表的ObjectID是自增字段,应该如何实现?

假如ObjectID不是自增字段,应该如何设计数据表?

------解决方案--------------------
建一个sequence表,在插入表之前先取得person表的ObjectID,然后分别插入各张表。

存储过程也可以,

还有可以将表的默认值关联到sequence上,这样插入的时候不需要插入这个字段,只要插入其他值就可以。
------解决方案--------------------
1、假如只设置了person表的ObjectID是自增字段,应该如何实现? 
--------------------
person表Objectid是自增字段,那么可以先插入它,然后取出它。如果你使用了ORM框架,那么它会自动帮你把KEY取出来帮设置好。如果没有用框架,那么用MYSQL的SQL指令SELECT LAST_INSERT_ID()是可以取到你刚刚插入的记录的KEY的。然后吧这个值附给其他2个记录。

2、假如ObjectID不是自增字段,应该如何设计数据表?
--
建议不要这样做。
非要这么做的话,可以:
(1)做一个方法,在每次插入前,找到person表的最大的Objectid,然后加1。这种办法需要考虑的是并发冲突导致抢号事件发生,所以要考虑采用同步。
(2)做一个专门产生号码的空表,只定义一个自增字段,然后用这个表的KEY作为3个表的KEY。--其实跟前面的方法一样,只不过把person的自增字段移到了这个多余的表而已。
(3)专门做一个流水号表,维持一行记录,每次把流水号加1。这种方式同样要考虑同步的问题。

综上所述,还是1合适!