• 15 апреля стартует «Курс «SQL-injection Master» ©» от команды The Codeby

    За 3 месяца вы пройдете путь от начальных навыков работы с SQL-запросами к базам данных до продвинутых техник. Научитесь находить уязвимости связанные с базами данных, и внедрять произвольный SQL-код в уязвимые приложения.

    На последнюю неделю приходится экзамен, где нужно будет показать свои навыки, взломав ряд уязвимых учебных сайтов, и добыть флаги. Успешно сдавшие экзамен получат сертификат.

    Запись на курс до 25 апреля. Получить промодоступ ...

Добавление триггера

  • Автор темы flame33
  • Дата начала
F

flame33

Есть 2 таблицы в SQL Server 2000.
_______.jpg
Нужно добавить триггер, чтобы при добавлении новой записи в таблицу Seat соблюдалось правило:
если ID_Sector.Sector=ID_Sector.Seat,
то Initial_Row.Sector<=Number_Row.Seat <=Finite_Row.Sector.
Пожалуйста помогите с реализацией.
 
F

flame33

Не видно реализации.
Вот.Только не работает. :)

<!--shcode--><pre><code class='sql'>CREATE TRIGGER INSROW
ON Seat FOR INSERT
AS
IF @@ROWCOUNT=1
BEGIN
IF NOT EXISTS (SELECT *
FROM inserted
WHERE Initial_Row.Sector<=Number_Row.Seat<=Finite_Row.Sector
AND ID_Sector.Sector=ID_Sector.Seat
BEGIN
ROLLBACK TRAN
PRINT
'Номер ряда не соответствует выбранному сектору зала!'
END
END[/CODE]
 
F

flame33

Вы с синтаксисом sql не знакомы, надо начать с него.
Я переделал немного, помогите пожалуйста разобраться почему не работает...
<!--shcode--><pre><code class='sql'>CREATE TRIGGER INSROW
ON Seat FOR INSERT
AS
IF @@ROWCOUNT=1
BEGIN
IF NOT EXISTS (SELECT *
FROM inserted, Sector
WHERE inserted.ID_Sector=Sector.ID_Sector AND
Sector.Initial_Row<=inserted.Number_Seat AND inserted.Number_Seat<=Sector.Finite_Row)

BEGIN
ROLLBACK TRAN
PRINT
'Номер ряда не соответствует выбранному сектору зала!'
END
END[/CODE]
 
A

Aleksey

Не работает потому, что такое работать не может.
Неправильная конструкция команды CREATE TRIGGER, неправильный оператор IF, неправильный SELECT внутри, и, наконец, - ROLLBACK (команды управления транзакциями в триггерах недопустимы).
 
Мы в соцсетях:

Обучение наступательной кибербезопасности в игровой форме. Начать игру!