Триггер DB2 перед вставкой - PullRequest
0 голосов
/ 13 октября 2018

DB2 Trigger перед вставкой не работает для удаления строки в таблице

CREATE TRIGGER WDW.user_name_search_del
before INSERT ON WDW.user_name_search_b
REFERENCING NEW AS new
FOR EACH ROW MODE DB2SQL
BEGIN ATOMIC
Delete from wdw.user_name_search_b
where user_name = new.user_name ;--

выдает ошибку

Обнаружен неожиданный токен "END-OF-STATEMENT"следующий "name = new.user_name".Ожидаемые токены могут включать: "" .. SQLCODE = -104, SQLSTATE = 42601, DRIVER = 4.9.78 Код SQL: -104, состояние SQL: 42601

1 Ответ

0 голосов
/ 13 октября 2018

Две вещи, которые нужно исправить:

  1. Измените «BEGIN ATOMIC» на «BEGIN».DELETE не поддерживается в блоке «BEGIN ATOMIC»
  2. Добавить «; END» перед «; -», чтобы завершить блок «BEGIN».

Заявление должно быть:

CREATE TRIGGER WDW.user_name_search_del 
  before INSERT ON WDW.user_name_search_b 
  REFERENCING NEW AS new 
  FOR EACH ROW 
  MODE DB2SQL 
BEGIN  
  Delete 
  from wdw.user_name_search_b 
  where user_name = new.user_name; 
END;
...