powered by simpleCommunicator - 2.0.49     © 2025 Programmizd 02
Форумы / SQLite [игнор отключен] [закрыт для гостей] / Триггер для SQLite, устанавливающий следующее после максимального число
2 сообщений из 2, страница 1 из 1
Триггер для SQLite, устанавливающий следующее после максимального число
    #39091796
Никак не могу написать для SQLite триггер, который бы срабатывал после вставки данных (AFTER INSERT), и вставлял в поле с именем sort_order максимальное значение этого же поля + 1. Скорость срабатывания неважна.

Пытаюсь написать так:

Код: sql
1.
2.
3.
4.
5.
CREATE TRIGGER [responses_sort_order] 
AFTER INSERT ON "responses" 
BEGIN 
 UPDATE responses SET sort_order=max(sort_order)+1 WHERE id IN (select max(id) from responses); 
END



Но не работает. При добавлении записи, в Firefox SQLite Manager вижу ошибку:

Код: sql
1.
2.
Exception Name: NS_ERROR_FAILURE
Exception Message: Component returned failure code: 0x80004005 (NS_ERROR_FAILURE)



Вопрос. Как сделать триггер, который бы (при создании записи) вычислял для поля максимальное значение, и записывал в новую запись в это поле следующее после максимального число.
...
Рейтинг: 0 / 0
Триггер для SQLite, устанавливающий следующее после максимального число
    #39091923
White Owl
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
1) Убери кавычки вокруг имени таблицы и скобки вокруг имени триггера.
2) Оператор IN в даном случае бессмысленнен. max() уже вернет одно единственное значение, а значит и сравнивать можно через =
3) данный триггер не будет работать на пустой таблице
4) У тебя очень странная структура таблицы. Есть поле ID для которого может выполняться max(), это значит что ты уже можешь сортировать по ID. И при этом ты делаешь еще второе поле sort_order по которому собираешсья сортировать. Вывод: смысла в данном триггере - ноль целых, ноль десятых.
...
Рейтинг: 0 / 0
2 сообщений из 2, страница 1 из 1
Форумы / SQLite [игнор отключен] [закрыт для гостей] / Триггер для SQLite, устанавливающий следующее после максимального число
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]