如何组合两个不相关的SQL查询

时间:2011-10-07 05:02:19

标签: mysql sql

假设我有两个SQL查询:

INSERT INTO tableA VALUES ('', 'mike', '21')

DELETE FROM tableB WHERE name = 'john'

我想同时执行它们。我怎么做? 我知道UNION只适用于SELECT语句,所以在这种情况下它没用。

5 个答案:

答案 0 :(得分:6)

您创建了一个交易。

http://dev.mysql.com/doc/refman/5.5/en/commit.html

START TRANSACTION;
  INSERT INTO tableA VALUES ('', 'mike', '21');
  DELETE FROM tableB WHERE name = 'john';
COMMIT;

答案 1 :(得分:0)

编写一个封装这些语句的stored procedure,并从您的应用程序中调用它。

答案 2 :(得分:0)

将所有语句放在存储过程中并改为调用该过程。

答案 3 :(得分:0)

您需要研究使用交易。这是ACID properties中的A(原子性),可以保证数据库中的事务完整性,这意味着事务的所有将会发生,或者 none 它会。

查看the latest docs,了解其工作原理。基本上,它是:

start transaction
do your first operation
do your second operation
commit

并且,通过适当的隔离,在提交完成之前,外部世界将无法看到更改。

答案 4 :(得分:0)

你不能在同一时间执行它们,但我猜你是在问这个,因为你只想在第一个查询成功时运行第二个查询。这可以通过使用交易来实现。有一些很好的例子是this问题。