На основании этого ответа Я пытаюсь обновить столбец в таблице b
на основе значений из таблицы a
, где таблица b
имеет внешний ключ к таблице a
. Мой запрос успешно выполняется и работает должным образом для строк, на которые он влияет. Тем не менее, это не влияет на все строки, и я не понимаю, почему. Кажется, он влияет только на три строки, независимо от размера базы данных.
Вот воспроизводимый пример:
CREATE TABLE a ( qty1 INTEGER, qty2 INTEGER, aID INTEGER PRIMARY KEY)WITHOUT ROWID;
CREATE TABLE b ( bID INTEGER, aID INTEGER,FOREIGN KEY(aID) REFERENCES a(aID) ON DELETE CASCADE);
INSERT INTO a (qty1, qty2, aID) VALUES (0, 100, 1906250435150010797);
INSERT INTO a (qty1, qty2, aID) VALUES (100, 100, 1906250435150010798);
INSERT INTO a (qty1, qty2, aID) VALUES (0, 100, 1906250435150010799);
INSERT INTO b (bID, aID) VALUES (0, 1906250435150010797);
INSERT INTO b (bID, aID) VALUES (0, 1906250435150010798);
INSERT INTO b (bID, aID) VALUES (1, 1906250435150010798);
INSERT INTO b (bID, aID) VALUES (0, 1906250435150010799);
ALTER TABLE b ADD COLUMN SameQty INTEGER;
UPDATE b SET SameQty = 0 WHERE aID = (SELECT aID from a where qty1 != qty2);
UPDATE b SET SameQty = 1 WHERE aID = (SELECT aID from a where qty1 = qty2);
Ожидаемый результат:
Фактический результат:
Проверено на sqlite 3.26.0