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

У меня есть две таблицы: Таблица_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
05.02.2016, 09:16
    #39163521
const64
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
db2 triggers
db2shit,

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

2. Текст и номер ошибки?
...
Рейтинг: 0 / 0
05.02.2016, 10:46
    #39163620
Mark Barinstein
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
db2 triggers
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
Форумы / IBM DB2, WebSphere, IMS, U2 [игнор отключен] [закрыт для гостей] / db2 triggers / 3 сообщений из 3, страница 1 из 1
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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