【发布时间】:2018-02-21 06:17:44
【问题描述】:
我正在尝试在 DB Browser for 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;
【问题讨论】:
-
是的 - 这就是 SQL 的工作方式。你期待什么?
-
看看这里,这似乎是你想要的:stackoverflow.com/questions/22108253/…
-
但这是一个事务,如果查询失败,其余查询将无法正常工作
标签: sql sqlite transactions