Гость
Форумы / Microsoft SQL Server [игнор отключен] [закрыт для гостей] / Ошибка при создание триггера / 5 сообщений из 5, страница 1 из 1
24.10.2020, 11:30
    #40011503
LiQuid
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Ошибка при создание триггера
Создал триггер:

Код: sql
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
CREATE TRIGGER d_tbEmployee ON dbo.EMPLOYEE 

	FOR DELETE
AS 
	IF EXISTS (SELECT * FROM dbo.EMPLOYEE WHERE last_name='SMITH')

BEGIN 

	PRINT "ОШИБКА, нельзя удалить этого пользователя" 
	
	ROLLBACK TRANSACTION 

END


При запуске MS SQL Management Studio ругается:

Сообщение 128, уровень 15, состояние 1, процедура d_tbEmployee, строка 11
Имя "ОШИБКА, нельзя удалить этого пользователя" не разрешено в данном контексте. Допустимыми выражениями являются константы, константные выражения и (в некоторых контекстах) переменные. Имена столбцов не разрешены.

Почему?
...
Рейтинг: 0 / 0
24.10.2020, 11:32
    #40011504
waszkiewicz
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Ошибка при создание триггера
...
Рейтинг: 0 / 0
24.10.2020, 11:33
    #40011505
LiQuid
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Ошибка при создание триггера
waszkiewicz,

Да, исправил и создал триггер.
Теперь когда удаляю запись с именем SMITH, триггер не срабатывает, т.е запись в легкую удалилась из БД.
Триггер не должен был запретить удаление?
...
Рейтинг: 0 / 0
24.10.2020, 11:39
    #40011507
alexeyvg
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Ошибка при создание триггера
LiQuid,


LiQuid
waszkiewicz,

Да, исправил и создал триггер.
Теперь когда удаляю запись с именем SMITH, триггер не срабатывает, т.е запись в легкую удалилась из БД.
Триггер не должен был запретить удаление?
Кто знает, должен или не должен.

Нужно научиться отлаживать код.
Вставьте перед "IF EXISTS " строку, запрос:
Код: sql
1.
SELECT * FROM dbo.EMPLOYEE WHERE last_name='SMITH'
...
Рейтинг: 0 / 0
24.10.2020, 11:45
    #40011512
iap
iap
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Ошибка при создание триггера
Триггер AFTER (или FOR, что одно и то же) DELETE запускается после удаления.
Поэтому ваш IF определяет, что такой записи в таблице уже нет.
Так что логичнее проверять не саму таблицу, а deleted
...
Рейтинг: 0 / 0
Форумы / Microsoft SQL Server [игнор отключен] [закрыт для гостей] / Ошибка при создание триггера / 5 сообщений из 5, страница 1 из 1
Целевая тема:
Создать новую тему:
Автор:
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]