如果其他成功,则执行SQL Query

时间:2018-03-26 14:41:41

标签: mysql sql

我有以下查询

INSERT INTO balance
(_id, value)
VALUES
(1,10) 
ON DUPLICATE KEY 
UPDATE value=VALUES(value + 10)

显然这会更新一行,如果该行不存在,则会创建该行。

现在我想在上一个查询成功完成后执行以下查询

INSERT INTO transaction (owner, value, type, description) VALUES (1, 10,'CREDIT','User Deposit');

如何将第二个查询链接起来,如果第一个成功,则只能执行第二个查询。

有什么想法吗?

3 个答案:

答案 0 :(得分:0)

您可以使用输出子句:

UPDATE TableA
SET ColA = 'SomethingNew'
OUTPUT DELETED.ColA , INSERTED.ColA 
WHERE YourLogicHere;
GO;

答案 1 :(得分:0)

如果您使用InnoDB引擎,您应该只使用一个事务:

START TRANSACTION;

INSERT INTO balance
(_id, value)
VALUES
(1,10) 
ON DUPLICATE KEY 
UPDATE value=VALUES(value + 10);

INSERT INTO transaction (owner, value, type, description) VALUES (1, 10,'CREDIT','User Deposit');

COMMIT;

如果第一个语句失败,则第二个语句不会被提交。

答案 2 :(得分:0)

使用行计数。使用移动设备进行拼写错误 插入平衡 (_id,value) VALUES (1,10) 在DUPLICATE KEY UPDATE值= VALUES(值+ 10)

选择row_count到@count; 如果@ count> 0则 INSERT INTO交易(所有者,价值,类型,描述)VALUES(1,10,'CREDIT','用户存款');

结束if;