Добро пожаловать в форум, Guest  >>   Войти | Регистрация | Поиск | Правила | В избранное | Подписаться
Все форумы / Microsoft SQL Server Новый топик    Ответить
 Триггеры. Удаление данных из таблиц  [new]
Egordamov
Member

Откуда:
Сообщений: 4
Тема бд "Гостиница"
Есть 3 таблицы: Номера, Забронированные номера, Снятые комнаты.
Необходимо создать триггер, который при удалении данных из таблицы Номера автоматически удалял бы те же данные из таблиц Забронированные номера и Снятые комнаты.

Мои наработки

Это я пытался сделать условие для удаление
go
create trigger Номера_deleterows2 on Номера after delete
as delete from Забронированные_номера where Номер_комнаты = (select Номер_комнаты from Номера)



А это добавляет информацию об операции в отдельную таблицу, т.е. какие данные удалены.
insert into History (Номер_комнаты, Описание)
SELECT Id,'Удален номер ' + Номер_комнаты + 'этаж' + Описание
FROM History
28 апр 21, 11:55    [22315527]     Ответить | Цитировать Сообщить модератору
 Re: Триггеры. Удаление данных из таблиц  [new]
msLex
Member

Откуда:
Сообщений: 8928
Egordamov,

В триггере доступны "псевдо"-таблицы deleted и inserted, содержащие информацию обо всех записях, изменившихся стейтментом, вызвавшим триггер

Подробности и примеры есть в справке

https://docs.microsoft.com/ru-ru/sql/t-sql/statements/create-trigger-transact-sql?view=sql-server-ver15
28 апр 21, 12:11    [22315542]     Ответить | Цитировать Сообщить модератору
 Re: Триггеры. Удаление данных из таблиц  [new]
Akina
Member

Откуда: Зеленоград, Москва, Россия
Сообщений: 21103
У SQL Server тоже есть внешние ключи (FOREIGN KEY) и каскадные операции. Так что и тут триггеры не нужны.
28 апр 21, 13:35    [22315614]     Ответить | Цитировать Сообщить модератору
 Re: Триггеры. Удаление данных из таблиц  [new]
Джонни Кейдж
Member

Откуда: стольный град Киев
Сообщений: 34
Есть несколько вариантов решения.

1. FOREIGN KEY (внешний ключ) с опцией ON DELETE CASCADE.
2. Триггер на удаление в таблице Номера.
3. Создать хранимую процедуру и в ней прописать нужные DELETE команды.
28 апр 21, 18:54    [22315882]     Ответить | Цитировать Сообщить модератору
 Re: Триггеры. Удаление данных из таблиц  [new]
Владислав Колосов
Member

Откуда:
Сообщений: 8587
Лучше всего написать процедуру для удаления.
Проще контролировать, не блокирует таблицу при обновлении кода.
29 апр 21, 12:29    [22316251]     Ответить | Цитировать Сообщить модератору
Все форумы / Microsoft SQL Server Ответить