Как удалить триггер sql
Перейти к содержимому

Как удалить триггер sql

  • автор:

УДАЛИТЬ ТРИГГЕР

После того как вы создали триггер в 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) 

Как мне снести этот триггер и правильно создать новый, который не будет зависать?

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *