2011-10-07 58 views
1

我需要一个sql语句,在一个数据库表中插入一个新行,并根据一些条件更新另一个数据库表中的现有行。需要一个sql语句来做upate并同时插入

有没有办法做到这一点?在一个表中插入一行并在一个sql语句中更新另一个数据库表中的行?

在此先感谢!

+0

你使用什么数据库系统? –

回答

4

是的,他们被称为Transactions,并实现与START TRANSACTION and COMMIT/ROLLBACK的东西,如:

START TRANSACTION; 
    INSERT INTO ... 
    UPDATE table2 SET name='TOTO' WHERE type=1; 
COMMIT; 

编辑

这其实也不是一个 SQL查询,但操作完成原子 - 我认为这是你需要的。

1

您可以使用Trigger上第一台插入

3

一个SQL语句,可以更新一个表更新第二个表,没有几个;如果该语句是MERGE,那么您可以指定插入/更新/删除操作,但仍然只针对同一个目标表。

如果您只是想要一致性,请使用事务;直到一个交易被提交,它内部的改变对外界来说是不可见的。

如果您希望单个更新(无法控制)导致协调插入,请在正在更新的表中使用on update触发器。触发器会将适当的行插入到其他表中。