Sqlite3+TSQLScript+create trigger?

Модератор: Модераторы

Sqlite3+TSQLScript+create trigger?

Сообщение ViruZ » 13.08.2021 15:49:18

Здравствуйте, возникла проблема создания триггера SQLite3 через SQLSript.
Если тот же скрипт исполняется в DBeaver или Db browser for SQLite, все отрабатывает нормально.
Вся структура БД создается программно скриптом, если код триггера выбросить, отрабатывает нормально, если добавляю триггер (или отдельно исполняю скрипт создания триггера), появляется ошибка "SQLite3Connection1 : incomplete input".
Код триггера:
Код: Выделить всё
CREATE TRIGGER "nak_apply"
      AFTER UPDATE
      ON "REG_HNAK"
      FOR EACH ROW
BEGIN
      UPDATE REG_NAK SET SAVED=NEW.SAVED WHERE HNAK=OLD.ROWID;
END;

Все таблицы в БД на момент создания триггера уже существуют.
Выполнение того же скрипта и через SQLite3Connection.ExecuteDirect, и через SQLQuery.Execute приводит к одинаковому результату.
ОС: Linux Mint 20.2/Windows7 x64, CodeTyphon 7.5/FPC 3.3.1
ViruZ
постоялец
 
Сообщения: 175
Зарегистрирован: 30.05.2005 17:41:12
Откуда: Украина

Re: Sqlite3+TSQLScript+create trigger?

Сообщение Vadim » 13.08.2021 18:26:49

ViruZ писал(а):Выполнение того же скрипта и через SQLite3Connection.ExecuteDirect, и через SQLQuery.Execute приводит к одинаковому результату.

Какому? :D
А Вы не пробовали названия триггера и таблицы писать без кавычек?
Vadim
долгожитель
 
Сообщения: 3980
Зарегистрирован: 05.10.2006 08:52:59
Откуда: Красноярск

Re: Sqlite3+TSQLScript+create trigger?

Сообщение ViruZ » 13.08.2021 23:03:27

К ошибке :(
Пробовал, та же ошибка - SQLite3Connection1 : incomplete input
ViruZ
постоялец
 
Сообщения: 175
Зарегистрирован: 30.05.2005 17:41:12
Откуда: Украина

Re: Sqlite3+TSQLScript+create trigger?

Сообщение Vadim » 14.08.2021 05:11:02

Тут явно требуются эксперименты. Судя по ошибке, SQLite3 ждал какого-то символа, но не дождался.
Vadim
долгожитель
 
Сообщения: 3980
Зарегистрирован: 05.10.2006 08:52:59
Откуда: Красноярск

Re: Sqlite3+TSQLScript+create trigger?

Сообщение Снег Север » 14.08.2021 09:05:04

SQLScript.Terminator измените на что-нибудь отличное от ;
Аватара пользователя
Снег Север
долгожитель
 
Сообщения: 2773
Зарегистрирован: 27.11.2007 16:14:47

Re: Sqlite3+TSQLScript+create trigger?

Сообщение ViruZ » 14.08.2021 13:44:31

Спасибо, помогло!
Изменил терминатор на #, соответственно после каждого действия со структурой в скрипте добавил терминатор, после этого структура создается одним скриптом так, как мне и нужно.
ViruZ
постоялец
 
Сообщения: 175
Зарегистрирован: 30.05.2005 17:41:12
Откуда: Украина

Re: Sqlite3+TSQLScript+create trigger?

Сообщение Снег Север » 14.08.2021 17:07:44

ViruZ, я сам когда-то на это нарывался...
Аватара пользователя
Снег Север
долгожитель
 
Сообщения: 2773
Зарегистрирован: 27.11.2007 16:14:47

Re: Sqlite3+TSQLScript+create trigger?

Сообщение ViruZ » 22.08.2021 14:06:29

Тему можно считать закрытой. Решил проблему небольшой модификацией скрипта создания структуры БД (без изменения значения SQLScript.Terminator) - в начале скрипта прописал строчку
Код: Выделить всё
SET TERM ^;

Соответственно после каждой точки с запятой в скрипт добавил ^, а в конце скрипта всё вернул обратно:
Код: Выделить всё
SET TERM ;^

Теперь вся структура создаётся с помощью одного скрипта без всяких ошибок.
Всем спасибо за помощь!
ViruZ
постоялец
 
Сообщения: 175
Зарегистрирован: 30.05.2005 17:41:12
Откуда: Украина


Вернуться в Базы данных

Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 0

Рейтинг@Mail.ru