LINUX.ORG.RU

SQLite Выполнить последовательно INSERT и UPDATE

 


0

2

Перешел с postgresql на sqlite работаю при помощи dbeaver. Есть файл состоит из нескольких SQL команд разделенных точкой с запятой. Например нужно последовательно выполнить 2 Sql запроса на INSERT и UPDATE:

INSERT INTO «Коды» ( «Код») VALUES ( «Начало» );

UPDATE «Коды» SET «Название» = 'НОВОЕ ИМЯ' where «Код» = «Начало»;

Запись вставляется, но не обновляется название. На postresql все ок. Пробовал обернуть в транзакцию типа:

BEGIN TRANSACTION;

INSERT INTO «Коды» ( «Код») VALUES ( «Начало» );

UPDATE «Коды» SET «Название» = 'НОВОЕ ИМЯ' where «Код» = «Начало»;

COMMIT;

не помогло. Как решить проблему



Последнее исправление: polin11 (всего исправлений: 1)

Пока ты не завершишь транзакцию INSERT, то UPDATE в этой же транзакции разве обязан работать? Может дело в опциях, там разные режимы есть, может в каком-то из них оно будет смотреть еще и в кэш активной транзы...

Говоришь, в postgresql работало такое?

I-Love-Microsoft ★★★★★
()
Последнее исправление: I-Love-Microsoft (всего исправлений: 1)

Сдается мне, sqlite разрабы могли решить, что инсертить нечто и в этой транзакции в догонку менять - не имеет смысла, вдруг они оптимизировали это, решили не саппортить. Стандарт SQL че говорит? Мне просто любопытно, сам на сыкуляте сижу, но так глубоко не копал

I-Love-Microsoft ★★★★★
()

Поставь галочку autocommit в своем dbeaver'е.

anonymous
()

Пости реальный код, а не то, что ты тут понаписал. where "Код" = "Начало" - ложное условие, это и дураку ясно.

anonymous
()
Ответ на: комментарий от I-Love-Microsoft

Для чего по-твоему нужны транзакции?

anonymous
()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.