SQLite事务无效

时间:2018-02-21 06:17:45

标签: sql sqlite transactions

我试图在DB浏览器中为SQLite执行SQLite事务,但是出现了意外行为。我在其中一个查询中故意拼错了一个表的名称,但它仍然在其他表中插入数据,除了我错误拼写的表。 这是我的疑问:

BEGIN; 
INSERT INTO vouchers (person_id, date, amount, description, mop, transaction_id) VALUES('XXXX','XXXX','XXX','XXX','XXXX','XXXX'); 
INSERT INTO personal_info (id, name, address, city, state, mobile, member) VALUES('XXXX','XXXX','XXXX','XXX','XXX','XX','XX'); 
INSERT INTO membership_info (person_id, join_date, transaction_id) VALUES('XXX','XXX','XXX'); 
INSERT INTO cas (id, person_id, date, remarks, type, amount, balance) VALUES('XXXX','XXXX','XXXXX','XXXX','XXX','XXX','XXX') ; 
COMMIT;

我故意拼错了上一个查询INSERT INTO cas中的表名,而不是INSERT INTO cash,但是除了最后一个查询之外,其他查询仍然有效。我还尝试用COMMIT;

替换ROLLBACK;

1 个答案:

答案 0 :(得分:2)

  

但它是一个交易,如果查询失败,其余的查询就不起作用

不,那不是交易如何运作。

提交事务时,启动事务后的所有更改都会对数据库中的其他人可见。在回滚的情况下,更改将被丢弃。

无效的SQL不会在事务中产生任何更改,只会返回错误。作为程序员,它 负责检测错误并为您选择适当的解决方案策略,例如回滚交易或提交。