powered by simpleCommunicator - 2.0.59     © 2025 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / IBM DB2, WebSphere, IMS, U2 [игнор отключен] [закрыт для гостей] / db2 triggers
3 сообщений из 3, страница 1 из 1
db2 triggers
    #39163366
db2shit
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Люди добрые обясните мне пожалуйста новичку как правильно делать тригеры. В инглише не силен, посему обращаюсь сюда.

У меня есть две таблицы: Таблица_1(Номер, Имя, Фамилия, Тел), Таблица_2(Номер, Имя, Фамилия, Дата, Логин)
Мне нужно написать тригер, который при удалении данных с Табл_1 удаленные строки вставлялись в Табл_2, кроме того, в Табл_2 вставлялись данные о текущей дате и текущего юзера.
Я пишу такое:

CREATE TRIGGER "SCHEMA".TRGR NO CASCADE BEFORE DELETE ON "SCHEMA".TABLE1 REFERENCING OLD AS old FOR EACH ROW MODE DB2SQL insert into schema.table2 values (old.number, old.firstname, old.lastname, current date, current user);

При выполнении возникает ошибка. Ткните пожалуйста носом, что не так ...
...
Рейтинг: 0 / 0
db2 triggers
    #39163521
const64
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
db2shit,

1. При создании триггера, или при выполнении (удалении строки)?

2. Текст и номер ошибки?
...
Рейтинг: 0 / 0
db2 triggers
    #39163620
Mark Barinstein
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
db2shit,

Код: plaintext
1.
2.
3.
4.
5.
6.
7.
CREATE TRIGGER "SCHEMA".TRGR 
NO CASCADE BEFORE DELETE ON "SCHEMA".TABLE1 
REFERENCING OLD AS old 
FOR EACH ROW 
MODE DB2SQL 
BEGIN
insert into schema.table2 values (old.number, old.firstname, old.lastname, current date, current user);
END@

Надо сделать триггер с т.н. compiled compound выражением, т.е. заключить коменды в нем в BEGIN ... END, если уж так хочется сделать это именно в BEFORE триггере, а не в AFTER.

CREATE TRIGGER :

SQL-procedure-statement
...
The SQL-procedure-statement in a BEFORE trigger cannot:

Contain any INSERT, DELETE, or UPDATE operations, nor invoke any routine defined with MODIFIES SQL DATA, if it is not a compound SQL (compiled).
...

А вообще эффективнее такие операции делать в AFTER и FOR EACH STATEMENT триггере делать.


P.S.:
Когда сообщаете об ошибке, приводите ее код и сообщение о ней, на какую именно команду это происходит.
А не просто - "возникает ошибка".
...
Рейтинг: 0 / 0
3 сообщений из 3, страница 1 из 1
Форумы / IBM DB2, WebSphere, IMS, U2 [игнор отключен] [закрыт для гостей] / db2 triggers
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]