需要一条sql语句同时进行更新和插入

发布于 2024-12-08 18:43:46 字数 121 浏览 0 评论 0原文

我需要一条 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 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(4

ら栖息 2024-12-15 18:43:46

是的,它们被称为事务,并且是使用 START TRANSACTION 和 COMMIT/ROLLBACK类似于:

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

EDIT

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

Yes, they are called Transactions, and are implemented with START TRANSACTION and COMMIT/ROLLBACK with something like:

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

EDIT

This is not in fact one SQL query, but the operation is done atomically - and I think that is what you need.

苍景流年 2024-12-15 18:43:46

一条 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).

千寻… 2024-12-15 18:43:46

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

You can use Trigger to update second table on insert of first table

那一片橙海, 2024-12-15 18:43:46

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

观看:存储过程

Yes, it's possible with stored procedures.

Watch this: Stored procedures

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文