Добро пожаловать в форум, Guest  >>   Войти | Регистрация | Поиск | Правила | В избранное | Подписаться
Все форумы / Oracle Новый топик    Ответить
 помогите с триггером  [new]
Железнодорожник
Member

Откуда:
Сообщений: 376
подскажите,не получается
после редактирования пользователем, поля work_date,work_user обновлялись, даже юзер если ручками будут редактировать эти данные, триггер обновлял на sysdate,user
CREATE OR REPLACE TRIGGER MYTRIGGER
AFTER INSERT ON MYTABLE REFERENCING FOR EACH ROW
BEGIN 
  IF INSERTING THEN
  :new.work_date:=sysdate;
  :new.work_user:=user;
  END IF;
END MYTRIGGER;
и хорошо было бы, если скрыть эти поля от редакторов
25 май 10, 15:56    [8831235]     Ответить | Цитировать Сообщить модератору
 Re: помогите с триггером  [new]
dmidek
Member

Откуда: Киев - Дортмунд
Сообщений: 116275
Ничего не понял. "Кто на ком стоял ?" :-)

То есть наверное пользователи вводили строки в каком- то ГУИвском гриде ?
Тогда поведение триггера естественно - ему без разницы, как строки вставляются ...

Поясните, в чем проблема ?
25 май 10, 16:00    [8831276]     Ответить | Цитировать Сообщить модератору
 Re: помогите с триггером  [new]
Железнодорожник
Member

Откуда:
Сообщений: 376
dmidek
Ничего не понял. "Кто на ком стоял ?" :-)

То есть наверное пользователи вводили строки в каком- то ГУИвском гриде ?
Тогда поведение триггера естественно - ему без разницы, как строки вставляются ...

Поясните, в чем проблема ?

юзеры через софт добавляют строки в таблице
после вставки строк, поля work_date,work_user в этой же таблице обновлялись текущим юзером и текущая дата_время
25 май 10, 16:02    [8831302]     Ответить | Цитировать Сообщить модератору
 Re: помогите с триггером  [new]
dmidek
Member

Откуда: Киев - Дортмунд
Сообщений: 116275
Железнодорожник
dmidek
Ничего не понял. "Кто на ком стоял ?" :-)

То есть наверное пользователи вводили строки в каком- то ГУИвском гриде ?
Тогда поведение триггера естественно - ему без разницы, как строки вставляются ...

Поясните, в чем проблема ?

юзеры через софт добавляют строки в таблице
после вставки строк, поля work_date,work_user в этой же таблице обновлялись текущим юзером и текущая дата_время


Ну да....Это Ваш триггер делает. Вам это не нужно ? Удалите его :-)
25 май 10, 16:04    [8831326]     Ответить | Цитировать Сообщить модератору
 Re: помогите с триггером  [new]
Железнодорожник
Member

Откуда:
Сообщений: 376
dmidek

Ну да....Это Ваш триггер делает. Вам это не нужно ? Удалите его :-)

ошибка при компиляций, с псевдозаписями что то не так )
:new
Ora-04084 невозможно изменить значение NEW для этого типа триггера
25 май 10, 16:09    [8831397]     Ответить | Цитировать Сообщить модератору
 Re: помогите с триггером  [new]
AlexFF__|
Member

Откуда:
Сообщений: 2855
Железнодорожник

CREATE OR REPLACE TRIGGER MYTRIGGER
AFTER INSERT ON MYTABLE REFERENCING FOR EACH ROW
BEGIN
IF INSERTING THEN
:new.work_date:=sysdate;
:new.work_user:=user;
END IF;
END MYTRIGGER;]


Враг не пройдет!
25 май 10, 16:09    [8831399]     Ответить | Цитировать Сообщить модератору
 Re: помогите с триггером  [new]
AlexFF__|
Member

Откуда:
Сообщений: 2855
Железнодорожник
dmidek

Ну да....Это Ваш триггер делает. Вам это не нужно ? Удалите его :-)

ошибка при компиляций, с псевдозаписями что то не так )
:new
Ora-04084 невозможно изменить значение NEW для этого типа триггера


После вставки записи уже нет новых полей.
25 май 10, 16:12    [8831444]     Ответить | Цитировать Сообщить модератору
 Re: помогите с триггером  [new]
dmidek
Member

Откуда: Киев - Дортмунд
Сообщений: 116275
Железнодорожник
dmidek

Ну да....Это Ваш триггер делает. Вам это не нужно ? Удалите его :-)

ошибка при компиляций, с псевдозаписями что то не так )
:new
Ora-04084 невозможно изменить значение NEW для этого типа триггера


:-)
Нельзя сказать, что Вы особенно красноречивы.

Но да , в AFTER нельзя присваивать значения :NEW, только в BEFORE
25 май 10, 16:12    [8831457]     Ответить | Цитировать Сообщить модератору
 Re: помогите с триггером  [new]
Железнодорожник
Member

Откуда:
Сообщений: 376
AlexFF__|

После вставки записи уже нет новых полей.

т.е после вставки строки нет возможности поля обновлять ?
условие IF убрал
25 май 10, 16:15    [8831493]     Ответить | Цитировать Сообщить модератору
 Re: помогите с триггером  [new]
AlexFF__|
Member

Откуда:
Сообщений: 2855
AlexFF__|
Железнодорожник
dmidek

Ну да....Это Ваш триггер делает. Вам это не нужно ? Удалите его :-)

ошибка при компиляций, с псевдозаписями что то не так )
:new
Ora-04084 невозможно изменить значение NEW для этого типа триггера


После вставки записи уже нет новых полей.

Менять их нельзя в смысле!
25 май 10, 16:15    [8831499]     Ответить | Цитировать Сообщить модератору
 Re: помогите с триггером  [new]
Железнодорожник
Member

Откуда:
Сообщений: 376
AlexFF__|

Менять их нельзя в смысле!

а если до вставки сделать, то юзер может отредактировать sysdate или user
т.е я этого делаю, что бы мониторить, кто, когда делал, получается, при вставке будет имя текущего юзера,а юзер может отредактировать этот поле, например work_user=AlexFF__| :)
25 май 10, 16:19    [8831565]     Ответить | Цитировать Сообщить модератору
 Re: помогите с триггером  [new]
AlexFF__|
Member

Откуда:
Сообщений: 2855
Железнодорожник
AlexFF__|

Менять их нельзя в смысле!

а если до вставки сделать, то юзер может отредактировать sysdate или user
т.е я этого делаю, что бы мониторить, кто, когда делал, получается, при вставке будет имя текущего юзера,а юзер может отредактировать этот поле, например work_user=AlexFF__| :)


Ну, во первых, до вставки - это значит, что процесс уже пошел и юзьверь там ничего уже не поменяет.
Во вторых, он может потом сделать update этих полей, т.к. у Вас нет на это реакции.
25 май 10, 16:22    [8831592]     Ответить | Цитировать Сообщить модератору
 Re: помогите с триггером  [new]
dmidek
Member

Откуда: Киев - Дортмунд
Сообщений: 116275
Железнодорожник
AlexFF__|

Менять их нельзя в смысле!

а если до вставки сделать, то юзер может отредактировать sysdate или user
т.е я этого делаю, что бы мониторить, кто, когда делал, получается, при вставке будет имя текущего юзера,а юзер может отредактировать этот поле, например work_user=AlexFF__| :)


Самое время почитать концепции и понять, что значат на самом деле BEFORE и AFTER - триггеры.
25 май 10, 16:23    [8831606]     Ответить | Цитировать Сообщить модератору
 Re: помогите с триггером  [new]
AmKad
Member

Откуда:
Сообщений: 5222
Железнодорожник

и хорошо было бы, если скрыть эти поля от редакторов

1) Создать вью CREATE VIEW
2) Дать права на вьюху GRANT
3) Отобрать права на таблицу REVOKE
25 май 10, 18:43    [8833056]     Ответить | Цитировать Сообщить модератору
Все форумы / Oracle Ответить