需要一条sql语句同时进行更新和插入
我需要一条 sql 语句,在一个数据库表中插入新行,并根据某些条件更新另一个数据库表中的现有行。
有办法做到这一点吗?在一个sql语句中在一个表中插入一行并更新另一个数据库表中的一行?
提前致谢!
I need a sql statement, to insert a new row in one database table and update an existing row in another database table based on some conditions.
Is there a way to do this? To insert a row in one table and update a row in another database table in one sql statement?
Thanks in advance!
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(4)
是的,它们被称为事务,并且是使用
START TRANSACTION 和 COMMIT/ROLLBACK
类似于:EDIT
这实际上不是 一个 SQL 查询,但操作是原子完成的 - 我认为这就是您所需要的。
Yes, they are called Transactions, and are implemented with
START TRANSACTION and COMMIT/ROLLBACK
with something like:EDIT
This is not in fact one SQL query, but the operation is done atomically - and I think that is what you need.
一条 SQL 语句允许您更新一个表,而不是多个表;如果该语句是
MERGE
那么您可以指定插入/更新/删除操作,但仍然针对同一个目标表。如果你只是想要一致性,就使用事务;在提交事务之前,外部世界看不到其中的更改。
如果您希望单个更新(您无法控制)导致协调插入,请在正在更新的表中使用
on update
触发器。触发器会将适当的行插入到其他表中。A single SQL statement allows you to update one table, not several; if that statement is a
MERGE
then you can specify insert/update/delete actions but still targeting just the same one target table.If you just want consistency, use transactions; until a transaction is committed, changes within it are not visible to the outside world.
If you want that a single update (which you cannot control) resulted in a coordinated insert, use an
on update
trigger in the table being updated. The trigger would insert appropriate row(s) into other table(s).您可以使用
触发器
在插入第一个表时更新第二个表You can use
Trigger
to update second table on insert of first table是的,使用存储过程是可能的。
观看:存储过程
Yes, it's possible with stored procedures.
Watch this: Stored procedures