我需要一个sql语句,在一个数据库表中插入一个新行,并根据某些条件更新另一个数据库表中的现有行。
有办法做到这一点吗?在一个表中插入行并在一个sql语句中更新另一个数据库表中的行?
提前致谢!
答案 0 :(得分:4)
是的,它们被称为Transactions,并使用START TRANSACTION and COMMIT/ROLLBACK
实现,例如:
START TRANSACTION;
INSERT INTO ...
UPDATE table2 SET name='TOTO' WHERE type=1;
COMMIT;
修改强>
这实际上并不是一个 SQL查询,但操作是以原子方式完成的 - 我认为这就是你需要的。
答案 1 :(得分:3)
单个SQL语句允许您更新一个表,而不是几个;如果该语句是MERGE
,那么您可以指定插入/更新/删除操作,但仍然只针对同一个目标表。
如果您只想要一致性,请使用交易;在提交事务之前,其中的更改对外界是不可见的。
如果您希望单个更新(无法控制)导致协调插入,请在要更新的表中使用on update
触发器。触发器会将适当的行插入其他表中。
答案 2 :(得分:1)
您可以使用Trigger
更新第一个表格的第二个表格
答案 3 :(得分:1)
是的,可以使用存储过程。