С Новым годом! Форум программистов, компьютерный форум, киберфорум
Microsoft SQL Server
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.53/15: Рейтинг темы: голосов - 15, средняя оценка - 4.53
0 / 0 / 0
Регистрация: 03.03.2013
Сообщений: 40

Триггер на удаление

08.11.2013, 16:02. Показов 3202. Ответов 4
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Есть БД, содержащая таблицы "Актеры", "Спектакли" и "Занятость актеров". Я создаю триггер, реагирующий на удаление записи из таблицы занятость, чтобы проверялось, есть ли у актера звание и если есть, то запретить удаление. Он у меня удаляет запись в любом случае, помогите разобраться, пожалуйста!

SQL
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
CREATE TRIGGER TriggerDelete
ON zanyatost FOR DELETE
AS
DECLARE @ID CHAR(6), @ZV CHAR(100)
IF @@ROWCOUNT=1
    BEGIN
    SELECT @ID=act_id
    FROM DELETED
    IF '%артист%' = (SELECT zvanie
                FROM akters
                WHERE act_id=@ID
                )
                BEGIN
                ROLLBACK TRAN
                PRINT 'Актер, имеющий звание не может быть удален из сетки занятости'
                END
      ELSE PRINT 'Информация об актере успешно удалена'
    END;
Миниатюры
Триггер на удаление   Триггер на удаление  
0
Programming
Эксперт
39485 / 9562 / 3019
Регистрация: 12.04.2006
Сообщений: 41,671
Блог
08.11.2013, 16:02
Ответы с готовыми решениями:

Триггер на удаление
Добрый вечер. Помогите пожалуйста написать триггер. Две таблицы dbo.Students(StudentID(PK), StudentName) и dbo.Cars(CarId(PK), CarName,...

Триггер на удаление
Короче у меня кинотеатр и мне нужно сделать так чтобы когда сеанс кончился то из таблицы сеансы удалить запись об этом и сеансе и занести...

Триггер на удаление
Триггер должен запретить удалять студента, если он один в группе CREATE TRIGGER . ON . FOR DELETE AS IF EXISTS (SELECT ...

4
1116 / 761 / 183
Регистрация: 27.11.2009
Сообщений: 2,272
08.11.2013, 18:24
Чудеса, да и только!
Я и не знал, что слово 'артист' пишется с двумя процентами.

Хотя, если удаляются несколько записей одним deleteом,
то удалённое так и останется удалённым - условие в if
ведь не выполнится!

Применение @@ROWCOUNT в триггере делает невозможным применять
к этой таблице команду MERGE: ведь если в MERGE ни одной строки не проапдейтилось,
но одна строка вставилась, триггер на UPDATE всё равно будет вызван,
а @@ROWCOUNT будет равно 1 (общее количество затронутых MERGEом строк).

Я давно пришёл к выводу, что объявление в триггере скалярных переменных -
это верный признак триггера-урода! За редкими исключениями.
Ведь в скалярную переменную результат запроса inserted/deleted не занесёшь,
если обрабатывается больше одной строки.
0
0 / 0 / 0
Регистрация: 03.03.2013
Сообщений: 40
08.11.2013, 18:45  [ТС]
Цитата Сообщение от iap Посмотреть сообщение
Чудеса, да и только!
Я и не знал, что слово 'артист' пишется с двумя процентами.

Хотя, если удаляются несколько записей одним deleteом,
то удалённое так и останется удалённым - условие в if
ведь не выполнится!

Применение @@ROWCOUNT в триггере делает невозможным применять
к этой таблице команду MERGE: ведь если в MERGE ни одной строки не проапдейтилось,
но одна строка вставилась, триггер на UPDATE всё равно будет вызван,
а @@ROWCOUNT будет равно 1 (общее количество затронутых MERGEом строк).

Я давно пришёл к выводу, что объявление в триггере скалярных переменных -
это верный признак триггера-урода! За редкими исключениями.
Ведь в скалярную переменную результат запроса inserted/deleted не занесёшь,
если обрабатывается больше одной строки.
хаха, ну проценты для того, чтобы просчитать вариант "заслуженный артист" или "народный артист", а вдруг там появится еще какое-то звание "артист чего-нибудь") Вообще изначально там было NULL<> (SELECT...), что тоже не работало.. Ааа, так чего делать то? это мои первые шаги в SQL, подскажите чуть)
0
 Аватар для ksk
624 / 495 / 43
Регистрация: 05.07.2010
Сообщений: 1,589
08.11.2013, 19:29
С процентами обычно пишут не =, а LIKE('%чегототам%')

Добавлено через 5 минут
то есть например что-то такое:
SQL
1
IF EXISTS ( SELECT TOP 1 * FROM akters WHERE act_id=@ID AND zvanie LIKE('%артист%') )
1
0 / 0 / 0
Регистрация: 03.03.2013
Сообщений: 40
10.11.2013, 05:47  [ТС]
Цитата Сообщение от ksk Посмотреть сообщение
С процентами обычно пишут не =, а LIKE('%чегототам%')

Добавлено через 5 минут
то есть например что-то такое:
SQL
1
IF EXISTS ( SELECT TOP 1 * FROM akters WHERE act_id=@ID AND zvanie LIKE('%артист%') )
Спасибо-спасибо, действительно в этом была загвоздка!!
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
inter-admin
Эксперт
29715 / 6470 / 2152
Регистрация: 06.03.2009
Сообщений: 28,500
Блог
10.11.2013, 05:47
Помогаю со студенческими работами здесь

Триггер удаление
Подскажите пожалуйста что удаляет этот триггер??? CREATE TABLE . ( INT IDENTITY (1, 1) NOT NULL, ...

Триггер на удаление
Здравствуйте!Ребят. помогите ,пожалуйста ,написать триггер на удаление Заказа, который еще не окончен. не представляю как((

Триггер на удаление
Здравствуйте. Такой вопрос. Как создать триггер на удаление таблицы. Т.е. если удалить таблицу, то в другой таблице появится информация...

Триггер, запрещающий удаление записи
Здравствуйте, я не силен в sql, только учусь. В лабе одно из заданий создать триггер, запрещающий удалять информацию о количестве поставок...

Триггер на удаление поля таблицы
Необходимо создать триггер,который при удалении поля из таблицы Pupil удалял бы соответствующие записи из связанных таблиц Relative и...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
5
Ответ Создать тему
Новые блоги и статьи
сукцессия микоризы: основная теория в виде двух уравнений.
anaschu 11.01.2026
https:/ / rutube. ru/ video/ 7a537f578d808e67a3c6fd818a44a5c4/
WordPad для Windows 11
Jel 10.01.2026
WordPad для Windows 11 — это приложение, которое восстанавливает классический текстовый редактор WordPad в операционной системе Windows 11. После того как Microsoft исключила WordPad из. . .
Classic Notepad for Windows 11
Jel 10.01.2026
Old Classic Notepad for Windows 11 Приложение для Windows 11, позволяющее пользователям вернуть классическую версию текстового редактора «Блокнот» из Windows 10. Программа предоставляет более. . .
Почему дизайн решает?
Neotwalker 09.01.2026
В современном мире, где конкуренция за внимание потребителя достигла пика, дизайн становится мощным инструментом для успеха бренда. Это не просто красивый внешний вид продукта или сайта — это. . .
Модель микоризы: классовый агентный подход 3
anaschu 06.01.2026
aa0a7f55b50dd51c5ec569d2d10c54f6/ O1rJuneU_ls https:/ / vkvideo. ru/ video-115721503_456239114
Owen Logic: О недопустимости использования связки «аналоговый ПИД» + RegKZR
ФедосеевПавел 06.01.2026
Owen Logic: О недопустимости использования связки «аналоговый ПИД» + RegKZR ВВЕДЕНИЕ Введу сокращения: аналоговый ПИД — ПИД регулятор с управляющим выходом в виде числа в диапазоне от 0% до. . .
Модель микоризы: классовый агентный подход 2
anaschu 06.01.2026
репозиторий https:/ / github. com/ shumilovas/ fungi ветка по-частям. коммит Create переделка под биомассу. txt вход sc, но sm считается внутри мицелия. кстати, обьем тоже должен там считаться. . . .
Расчёт токов в цепи постоянного тока
igorrr37 05.01.2026
/ * Дана цепь постоянного тока с сопротивлениями и источниками (напряжения, ЭДС и тока). Найти токи и напряжения во всех элементах. Программа составляет систему уравнений по 1 и 2 законам Кирхгофа и. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru