2015-06-24 4 views
1

Я знаю, что порядок триггеров в SQLite не определен (вы не можете быть уверены, какой триггер будет выполнен первым), но как насчет взаимосвязи между ограничениями таблицы и триггерами?Sqlite: ограничения таблиц и триггеры

Я имею в виду, предположим, что у меня есть, например, ограничение UNIQUE (или CHECK) в столбце и триггеры BEFORE и AFTER UPDATE в этой таблице. Если изменен столбец UNIQUE, когда sqlite проверяет ограничение UNIQUE? перед вызовом триггеров BEFORE, после вызова триггеров AFTER, между ними или с неопределенным порядком?

Я ничего не нашел в документах SQLite.

ответ

1

Когда в документации ничего не говорится об этом, порядок не определен.

До тех пор, пока триггеры не имеют побочных эффектов вне базы данных, это не имеет значения, поскольку любые изменения, сделанные триггером, будут отброшены назад, если ограничение завершится с ошибкой.

Обратите внимание, что SQLite берет обратную совместимость очень серьезно, поэтому маловероятно, что фактический порядок когда-либо изменится.

Смежные вопросы