Рассмотрим этот триггер:
ALTER TRIGGER myTrigger
ON someTable
AFTER INSERT
AS BEGIN
DELETE FROM someTable
WHERE ISNUMERIC(someField) = 1
END
У меня есть таблица, someTable, и я пытаюсь помешать людям вставлять плохие записи. Для целей этого вопроса у плохой записи есть поле "someField", которое является числовым.
Конечно, правильный способ сделать это НЕ с триггером, но я не контролирую исходный код... только базу данных SQL. Поэтому я не могу помешать вставке плохой строки, но я могу удалить ее сразу, что достаточно для моих нужд.
Триггер работает с одной проблемой... когда он срабатывает, он никогда не удаляет только что вставленную плохую запись... он удаляет любые плохие записи OLD, но не удаляет только что вставленную плохую запись, Таким образом, часто одна плохая запись, плавающая вокруг, не удаляется, пока кто-то еще не появится и не сделает другого INSERT.
Является ли это проблемой в моем понимании триггеров? Вновь вставленные строки еще не зафиксированы во время запуска триггера?