SQLite错误:无法在具有非常基本的表的事务中启动事务
我是SQL的新手,我正在使用SQLite编辑器学习。所以我创建了两个非常简单的表。这段代码直接来自Linkedin learning SQL essential training,我正在使用推荐的SQLite编辑器SQLite错误:无法在具有非常基本的表的事务中启动事务,sqlite,sqltransaction,Sqlite,Sqltransaction,我是SQL的新手,我正在使用SQLite编辑器学习。所以我创建了两个非常简单的表。这段代码直接来自Linkedin learning SQL essential training,我正在使用推荐的SQLite编辑器 CREATE TABLE widgetInventory( id INTEGER PRIMARY KEY, description TEXT, onhand INTEGER NOT NULL); CREATE TABLE widgetSales( i
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);
接下来,我想用sale更新widgetSales表,并更新widgetInventory表以记录现有库存的减少
我不明白为什么在运行它时会出现错误,因为它与课程中的情况完全相同
[06:18:04] Error while executing SQL query on database 'test': cannot start a transaction within a transaction
但是,我可以分别运行INSERT和UPDATE行,它们执行我希望它们执行的操作。在SQLite编辑器中,您可能需要删除或注释掉这两个事务前后的所有代码
BEGIN TRANSACTION;
INSERT INTO widgetSales ( inv_id, quan, price ) VALUES ( 1, 5, 500 );
UPDATE widgetInventory SET onhand = ( onhand - 5 ) WHERE id = 1;
END TRANSACTION;
BEGIN TRANSACTION;
INSERT INTO widgetInventory ( description, onhand ) VALUES ( 'toy', 25 );
ROLLBACK;
否则它将不会执行事务
除此之外,可能在某个地方写了一个错误。在.txt文件中复制和粘贴没有给我该事务错误,可以正常执行该事务。在SQLite编辑器中,您可能必须删除或注释掉这两个事务前后的所有代码
BEGIN TRANSACTION;
INSERT INTO widgetSales ( inv_id, quan, price ) VALUES ( 1, 5, 500 );
UPDATE widgetInventory SET onhand = ( onhand - 5 ) WHERE id = 1;
END TRANSACTION;
BEGIN TRANSACTION;
INSERT INTO widgetInventory ( description, onhand ) VALUES ( 'toy', 25 );
ROLLBACK;
否则它将不会执行事务
除此之外,可能在某个地方写了一个错误。在.txt文件中复制和粘贴没有给我那个事务错误,可以正常执行事务。显然,正在运行-END事务;-在运行之前,整个事务似乎都正常工作
我认为某种程度上,SQL认为事务已经发生了。不过,我不确定具体在哪里。因此,要停止它,您必须先结束事务,然后再继续课程。显然,运行-end transaction;-在运行之前,整个事务似乎都正常工作
我认为某种程度上,SQL认为事务已经发生了。不过,我不确定具体在哪里。因此,要停止它,您必须先结束事务,然后再继续课程。也有同样的错误,我的问题是我只突出显示了第一行,所以SQLLite启动了事务,但没有完全运行它。我所做的就是运行EndTransaction,突出显示整个代码块,然后运行它,它工作得很好。Lite中一定有语法问题,无法运行完整的块本身。也有同样的错误,我的问题是我只突出显示了第一行,所以SQLLite启动了事务,但没有完全运行它。我所做的就是运行EndTransaction,突出显示整个代码块,然后运行它,它工作得很好。Lite中一定存在语法问题,无法运行完整块本身。无论您使用什么与数据库交互,都显然已经开始了事务。查看它的文档,看看是否有任何方法可以改变这种行为?@Shawn我最初在开始事务和结束事务之间做了一些比较。我修复了这个问题,再次运行,并得到了无法启动错误。我尝试删除并重新输入表和信息,但仍然出现错误。它是否挂起在初始开始事务上?无论您使用什么与数据库交互,显然都已经开始了事务。查看它的文档,看看是否有任何方法可以改变这种行为?@Shawn我最初在开始事务和结束事务之间做了一些比较。我修复了这个问题,再次运行,并得到了无法启动错误。我尝试删除并重新输入表和信息,但仍然出现错误。是否在初始开始事务时挂起?