【发布时间】:2020-05-07 01:00:31
【问题描述】:
我是 SQL 的新手,我正在使用 SQLite 编辑器学习。所以我创建了几个非常简单的表。这段代码直接来自Linkedin学习《SQL必备训练》,我用的是推荐的SQLite编辑器。
CREATE TABLE widgetInventory(
id INTEGER PRIMARY KEY,
description TEXT,
onhand INTEGER NOT NULL);
CREATE TABLE widgetSales(
id INTEGER PRIMARY KEY,
inv_id INTEGER,
quan INTEGER,
price INTEGER);
然后我用一些数据更新widgetInventory:
INSERT INTO widgetInventory (description, onhand) VALUES ('rock', 25);
INSERT INTO widgetInventory (description, onhand) VALUES ('paper', 25);
INSERT INTO widgetInventory (description, onhand) VALUES ('scissors', 25);
接下来,我要更新widgetSales表为sale,更新widgetInventory表记录onhand的减少。
BEGIN TRANSACTION;
INSERT INTO widgetSales (inv_id, quan, price) VALUES (1,5,500);
UPDATE widgetInventory SET onhand = (onhand-5) WHERE id = 1;
END TRANSACTION;
我不明白为什么在我运行它时会出现错误,因为它与课程中的完全一样。
[06:18:04] Error while executing SQL query on database 'test': cannot start a transaction within a transaction
但是,我可以分别运行 INSERT 和 UPDATE 行,它们会做我想让它们做的事情。
【问题讨论】:
-
无论您使用什么与数据库交互,显然都已经开始了一个事务。查看其文档,看看是否有任何方法可以改变这种行为?
-
@Shawn 我最初在
BEGIN TRANSACTIO和END TRANSACTION之间摸索了一些东西。我修复了它,再次运行它,并得到cannot start错误。我尝试删除并重新输入表格和信息,但仍然出现错误。是挂在最初的BEGIN TRANSACTION上吗?
标签: sqlite sqltransaction