2013-04-04 55 views
0

假设我有一个对多个关系的两个表。商店和产品。在一个小查询中填写一对多关系

我想在一个查询(理想)中插入数据到这个表中,或者尽可能少地使用查询。

Straingtforward方式是插入行到商店表,然后获取最后一条记录的ID,并插入行到收到ID的产品表。不幸的是,这对我来说并不好,因为我有高延迟的数据库连接。此外,我有限制访问数据库,并不能创建存储过程。那么解决方案是什么?

+1

与你的问题无关,但你为什么不在商店和产品之间有多对多的关系? – 2013-04-04 17:08:36

+0

@Dan Bracuk我不能改变DB shema。它是遗留代码库的应用程序。 – Neir0 2013-04-04 17:15:28

+0

我认为这个问题的第一个答案是你想要的: http://stackoverflow.com/questions/5178697/mysql-insert-into-multiple-tables-database-normalization – invertedSpear 2013-04-04 17:41:46

回答

1

我不太确定请求是什么。 要将数据插入到2个表中,必须使用2个插入SQL。 只有一种方法可以确保那些2插入工作的权利是通过使用begin tran/commit/rollback并开始尝试/开始捕获。

begin try 
    begin tran 
     insert into shop... 
     insert into product... 

    commit 
end try 
begin catch 
    rollback 
end catch 

因此,如果发生任何事情,它将回滚,否则它将提交到表。