Я новичок в 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
с помощью продажи и обновить таблицу 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
строки по отдельности, и они делают то, что я хочу от них.