假设我有两个SQL查询:
INSERT INTO tableA VALUES ('', 'mike', '21')
DELETE FROM tableB WHERE name = 'john'
我想同时执行它们。我怎么做? 我知道UNION只适用于SELECT语句,所以在这种情况下它没用。
答案 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问题。