1

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

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

提前致谢!

4

4 回答 4

4

是的,它们被称为Transactions,并通过以下方式实现START TRANSACTION and COMMIT/ROLLBACK

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

编辑

这实际上不是一个SQL 查询,但操作是原子完成的 - 我认为这就是您所需要的。

于 2011-10-07T09:28:59.007 回答
3

单个 SQL 语句允许您更新一个表,而不是多个;如果该语句是一个,MERGE那么您可以指定插入/更新/删除操作,但仍然只针对同一个目标表。

如果您只想要一致性,请使用事务;在提交事务之前,外部世界看不到其中的更改。

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

于 2011-10-07T09:29:18.327 回答
1

您可以Trigger在插入第一个表时使用更新第二个表

于 2011-10-07T09:28:59.440 回答
1

是的,可以使用存储过程。

看这个:存储过程

于 2011-10-07T09:29:24.910 回答