В момент удаления записи (команда DELETE) срабатывает триггер удаления. Так же он сработает и при удалении записи клиентом на основе ADO или других технологий доступа к БД. Можно создавать триггер и только на удаление.
CREATE TRIGGER DELETE_CAR ON dbo.allcar FOR DELETE AS
Он будет отображаться специальным значком.
В момент срабатывания триггера удаления создается таблица deleted, куда помещаются удаленные записи, эти записи больше не существуют в базе данных и находятся в кэше. Значит этой таблицей можно воспользоваться.
CREATE TRIGGER DELETE_CAR ON dbo.allcar FOR DELETE AS SELECT * FROM deleted
Давайте запретим удалять автомобили с типом 2, то есть легковые.
CREATE TRIGGER DELETE_CAR ON dbo.allcar FOR DELETE AS IF (SELECT COUNT(*) FROM deleted WHERE deleted.type=2)>0 BEGIN ROLLBACK TRANSACTION END
Мы здесь написали, если количество удаляемых записей в таблицу deleted с типом 2 больше чем 0 (то есть они есть, то надо запретить удаление). Вот тут нас ждут интересные веши. Например, если клиент ACCESS, то он удаляет запись и больше ее не показывает в таблице.
Но стоит сделать любую операцию, которая обновляет записи, например, сортировку, как она тут же появляется снова.
То есть ни какой реакции на отмену транзакции в триггере. В данном случае мы использовали триггер, как средство для реализации бизнес логики. Подходы здесь могут быть изощренные. Например, что какие-то данные должны храниться не менее трех лет с момента занесения или признаки, по которым нельзя удалять клиента из базы данных.