С Новым годом! Форум программистов, компьютерный форум, киберфорум
Microsoft SQL Server
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.55/75: Рейтинг темы: голосов - 75, средняя оценка - 4.55
26 / 26 / 5
Регистрация: 29.05.2013
Сообщений: 151

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

25.03.2014, 00:38. Показов 14635. Ответов 4
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Добрый вечер.
Помогите пожалуйста написать триггер. Две таблицы dbo.Students(StudentID(PK), StudentName) и dbo.Cars(CarId(PK), CarName, StudentID(FK)). Чтобы при удалении записи из таблицы Студенты сначала удалились записи из Автомобилей, к-рые ссылаются на удаляемую запись из Студентов, а потом уже и сама запись из студентов, чтоб не возникало конфликта. Выставить каскадное удаление предлагать не нужно.

Если не сложно, то совсем для чайника, чтоб вставить код в выданный Мэнеджмент Студией шаблон:

T-SQL
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
-- =============================================
-- Author:      <Author,,Name>
-- Create date: <Create Date,,>
-- Description: <Description,,>
-- =============================================
CREATE TRIGGER <Schema_Name, sysname, Schema_Name>.<Trigger_Name, sysname, Trigger_Name> 
   ON  <Schema_Name, sysname, Schema_Name>.<Table_Name, sysname, Table_Name> 
   AFTER <Data_Modification_Statements, , INSERT,DELETE,UPDATE>
AS 
BEGIN
    -- SET NOCOUNT ON added to prevent extra result sets from
    -- interfering with SELECT statements.
    SET NOCOUNT ON;
 
    -- Insert statements for trigger here
 
END
GO
Спасибо.
0
Лучшие ответы (1)
Programming
Эксперт
39485 / 9562 / 3019
Регистрация: 12.04.2006
Сообщений: 41,671
Блог
25.03.2014, 00:38
Ответы с готовыми решениями:

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

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

Триггер на удаление
Есть БД, содержащая таблицы &quot;Актеры&quot;, &quot;Спектакли&quot; и &quot;Занятость актеров&quot;. Я создаю триггер, реагирующий на удаление записи из таблицы...

4
1313 / 945 / 144
Регистрация: 17.01.2013
Сообщений: 2,348
25.03.2014, 09:32
Instead of delete триггер
0
26 / 26 / 5
Регистрация: 29.05.2013
Сообщений: 151
25.03.2014, 11:57  [ТС]
Написал так:

T-SQL
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
CREATE TRIGGER [dbo].[DeleteStudent] 
   ON  [dbo].[Students]
   INSTEAD OF DELETE
AS 
 IF EXISTS(SELECT * FROM deleted)
BEGIN
    -- SET NOCOUNT ON added to prevent extra result sets from
    -- interfering with SELECT statements.
    SET NOCOUNT ON;
DELETE C
  FROM deleted d
  JOIN dbo.Cars C ON d.[StudentID]=C.[StudentID]
  DELETE dbo.Students
  FROM deleted
  WHERE deleted.[StudentID]=Students.[StudentID];
    -- Insert statements for trigger here
 
END
Выдает ошибку: Не удается выполнить команду создать INSTEAD OF DELETE или INSTEAD OF UPDATE TRIGGER для таблицы "dbo.Students", так как эта таблица содержит FOREIGN KEY с каскадным DELETE или UPDATE.

И действительно в таблице Студенты есть внешний ключ ParentID на таблицу Родители. Выставлено каскадное удаление студентов при удалении родителей.

Что делать?
0
3614 / 2135 / 756
Регистрация: 02.06.2013
Сообщений: 5,169
25.03.2014, 13:04
Отказаться вообще от каскадных операций. Использовать их только при крайней необходимости и хорошо понимая возможные последствия их использования.
0
 Аватар для nixon93nixon
63 / 63 / 21
Регистрация: 08.02.2013
Сообщений: 262
25.03.2014, 14:43
Лучший ответ Сообщение было отмечено ldkldk как решение

Решение

Цитата Сообщение от invm Посмотреть сообщение
Отказаться вообще от каскадных операций. Использовать их только при крайней необходимости и хорошо понимая возможные последствия их использования.
поддерживаю, но если по-другому не хочешь делать
то просто при создании FK в таблице автомобилей напиши
SQL
1
ON DELETE CASCADE ON UPDATE CASCADE
после объявления FK-поля

Добавлено через 10 минут
T-SQL
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
CREATE TRIGGER [dbo].[DeleteStudent] 
   ON  [dbo].[Students]
   AFTER DELETE
AS 
 IF EXISTS(SELECT * FROM deleted)
BEGIN
    -- SET NOCOUNT ON added to prevent extra result sets from
    -- interfering with SELECT statements.
    SET NOCOUNT ON;
 
  DELETE FROM dbo.Cars
  WHERE dbo.Cars.[StudentID] in (select studentsid from deleted);
    -- Insert statements for trigger here
 
END
но вот и триггер

Добавлено через 33 минуты
поправочка небольшая
T-SQL
1
2
 DELETE FROM dbo.Cars
  WHERE dbo.Cars.[StudentID] in (select studentid from deleted);
1
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
inter-admin
Эксперт
29715 / 6470 / 2152
Регистрация: 06.03.2009
Сообщений: 28,500
Блог
25.03.2014, 14:43
Помогаю со студенческими работами здесь

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

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

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

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

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


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

Или воспользуйтесь поиском по форуму:
5
Ответ Создать тему
Новые блоги и статьи
Модель микоризы: классовый агентный подход 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 законам Кирхгофа и решает её. Последовательность действий:. . .
Новый CodeBlocs. Версия 25.03
palva 04.01.2026
Оказывается, недавно вышла новая версия CodeBlocks за номером 25. 03. Когда-то давно я возился с только что вышедшей тогда версией 20. 03. С тех пор я давно снёс всё с компьютера и забыл. Теперь. . .
Модель микоризы: классовый агентный подход
anaschu 02.01.2026
Раньше это было два гриба и бактерия. Теперь три гриба, растение. И на уровне агентов добавится между грибами или бактериями взаимодействий. До того я пробовал подход через многомерные массивы,. . .
Советы по крайней бережливости. Внимание, это ОЧЕНЬ длинный пост.
Programma_Boinc 28.12.2025
Советы по крайней бережливости. Внимание, это ОЧЕНЬ длинный пост. Налог на собак: https:/ / **********/ gallery/ V06K53e Финансовый отчет в Excel: https:/ / **********/ gallery/ bKBkQFf Пост отсюда. . .
Кто-нибудь знает, где можно бесплатно получить настольный компьютер или ноутбук? США.
Programma_Boinc 26.12.2025
Нашел на реддите интересную статью под названием Anyone know where to get a free Desktop or Laptop? Ниже её машинный перевод. После долгих разбирательств я наконец-то вернула себе. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru