Я пытаюсь использовать SQLite для запуска тестов интеграции NHibernate. NHibernate's SchemaExport
настроит базу данных для меня на основе файлов сопоставления. Это прекрасно работает, за исключением моих триггеров. Вот что такое триггер в .hbm
файл выглядит следующим образом:SQLiteException «логическая ошибка рядом с« ON »» при создании триггера
<database-object>
<create>
CREATE TRIGGER TR_PersonInserted ON Person AFTER INSERT AS
BEGIN
SET NOCOUNT ON
UPDATE Person
SET ModifiedDate = GetDate(), CreatedDate = GetDate()
FROM inserted
WHERE Person.PersonId = inserted.PersonId
SET NOCOUNT OFF
END
</create>
<drop>
</drop>
</database-object>
Это отлично работает в SQL Server 2012.
Без этого триггера SchemaExport
также отлично работает при использовании SQLite. С этого триггера, хотя, я получаю исключение при создании схемы:
System.Data.SQLite.SQLiteException: SQL логическая ошибка или отсутствует база данных вблизи «ON»: ошибка синтаксиса
Этот не очень описательна. Я попробовал несколько вещей, чтобы получить немного дальше, в том числе:
- Удаление содержимого (т.е. все между
BEGIN
иEND
) - Удаление
AS
о - Удаление
ON
о - Извлечение подчеркивание от имени триггера
- Добавление
;
до выписки
Ничто не помогает.
Что мне не хватает? Каков правильный синтаксис триггера в SQLite?
Я бы предпочел решение, которое также прекрасно работает в SQL-Server-2012, но я не суетился об этом, так как я могу создать другой триггер на диалоговом диалоговом окне базы данных, если это необходимо.
PS. Я использую пакет NuGet для System.Data.SQLite (x86/x64).
@Jeroen Круто :) На различные проблемы! – user2864740
@Jeroen Спасибо! Я поклонник улучшения ответов. – user2864740