УДАЛИТЬ ТРИГГЕР
После того как вы создали триггер в Oracle, вам может понадобиться удалить его из базы данных. Вы можете сделать это с помощью команды DROP TRIGGER.
Синтаксис
DROP TRIGGER имя_триггера;
Параметры и аргументы
имя_триггера наименование триггера, который вы хотите удалить.
Примечание
- Смотрите также: как создать триггеры AFTER DELETE, AFTER INSERT, AFTER UPDATE, BEFORE DELETE, BEFORE INSERT, и BEFORE UPDATE.
Пример
DROP TRIGGER orders_before_insert;
Этот пример показывает как удалить триггер orders_before_insert с помощью команды DROP TRIGGER.
Как удалить триггер sql
В момент удаления записи (команда 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, то он удаляет запись и больше ее не показывает в таблице.
Но стоит сделать любую операцию, которая обновляет записи, например, сортировку, как она тут же появляется снова.
То есть ни какой реакции на отмену транзакции в триггере. В данном случае мы использовали триггер, как средство для реализации бизнес логики. Подходы здесь могут быть изощренные. Например, что какие-то данные должны храниться не менее трех лет с момента занесения или признаки, по которым нельзя удалять клиента из базы данных.
Как удалить триггер на SQL SERVER?
Идет выполнение запроса, которое не заканчивается. Вот код самого триггера:
USE [Problem] GO /****** Object: Trigger [dbo].[Telegram] Script Date: 26.08.2020 21:40:55 ******/ SET ANSI_NULLS ON GO SET QUOTED_IDENTIFIER ON GO ALTER TRIGGER [dbo].[Telegram] ON [dbo].[smsTelegram] AFTER INSERT AS EXEC xp_cmdshell 'd:\telegram.bat'
Пробовал удалить через ПКМ по имени триггера
'Действие Удалить завершилось неудачно для объекта "Триггер" "Telegram". (Microsoft.SqlServer.Smo)
Дополнительные сведения
При выполнении инструкции или пакета Transact-SQL возникло исключение. (Microsoft.SqlServer.ConnectionInfo) Превышено время ожидания запроса на блокировку. (Microsoft SQL Server, ошибка: 1222)
Как мне снести этот триггер и правильно создать новый, который не будет зависать?