Intereting Posts
Группа MySQL по функциональности в другой версии Как импортировать дамп mysql при переименовании некоторых таблиц / столбцов, а не импортировании других? Получение и упорядочение строк со значением больше нуля, тогда строки со значением 0 Внедрение несвязанного набора аппроксимации (поиск соединения) в SQL Вставка данных в несколько таблиц через представление sql sql поиск нескольких слов в строке Как выбрать данные, которые не совпадают в другом столбце Анонимный результат из sql-объекта выполнения запроса sql Внешние ключи во многих отношениях Выбрать с группировкой в ​​диапазоне Как использовать SUM () OVER () Какой шаблон SQL быстрее избегать вставки повторяющихся строк? Как получить все страницы статей в разделе Википедии и его подкатегориях? Вставка данных в таблицу улья Копирование данных MySQL и создание новой записи с условием

создание триггера в оракуле, который использует данные из другой таблицы

Я пытаюсь создать триггер в таблице с именем race, которая устанавливает ограничение, которое является «STARTDATE <= MEETING.ENDDATE»

другими словами, начало отсчета из таблицы расы должно быть меньше или равно значению таблицы встреч (СНЕТ ДЕЙСТВИЯ НЕ МОЖЕТ БЫТЬ ПОСЛЕ ЭТОЙ ДАТЫ!)

Я хотел бы, чтобы триггер срабатывал при добавлении записи в таблицу расы, а введенная начальная запись была неправильной (startdate – после окончания таблицы собраний)

Я создал это до сих пор, но я не знаю, прав ли я или как я его закончу!

CREATE OR REPLACE TRIGGER race_date_trg BEFORE INSERT OR UPDATE ON RACE FOR EACH ROW WHEN (NEW.RACEID) DECLARE STARTDATE DATE; BEGIN SELECT * FROM meeting INTO VARIABLE IF STARTDATE <= ENDDATE THEN INSERT INTO RACE (STARTDATE) VALUES (:n.startdate); else end (race_date_trg); 

Спасибо за помощь!

У вас много ошибок в вашем триггере.

  1. Вам не нужно объявлять переменную STARTDATE, вы должны использовать: new.STARTDATE
  2. Выражение WHEN (: new.RACEID) неверно
  3. Перед тем, как выбрать его, вы должны объявить ПЕРЕМЕННЫЙ.
  4. Ваш триггер не должен вставляться в Race. Вы можете сделать ошибку, если дата начала неверна.

Триггер может выглядеть так:

 CREATE OR REPLACE TRIGGER race_date_trg BEFORE INSERT OR UPDATE ON RACE FOR EACH ROW DECLARE MEETING_ENDDATE DATE; BEGIN SELECT ENDDATE INTO MEETING_ENDDATE FROM meeting; IF :NEW.STARTDATE > MEETING_ENDDATE THEN RAISE_APPLICATION_ERROR(-20000, 'Wrong start date!'); END IF: end race_date_trg;