Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / Oracle [игнор отключен] [закрыт для гостей] / Помогите новичку, триггер медленно выполняется! / 19 сообщений из 19, страница 1 из 1
27.09.2016, 16:57:51
    #39316381
Javl
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Помогите новичку, триггер медленно выполняется!
Приветствую всех!!!
Написал простейший триггер для записи в поле даты при обновлении карточки, но теперь карточка обновляется более минуты.
FOR EACH ROW не писал, чтобы не получить ошибку перечислил все поля.
Как можно ускорить процесс или оптимизировать выполнение триггера!
Заранее спасибо!!!
CREATE OR REPLACE TRIGGER UPDATE_DATE
BEFORE UPDATE
OF A_001,A_002,A_003,A_004,A_005,A_006,A_007,A_008,A_009,A_010,A_011,A_012,A_013,A_014,A_015,A_016,A_017,A_018,A_019,A_020,A_021,A_022,A_023,A_026,A_027,A_028,A_029,A_030,A_031,A_032,A_033,A_034,A_035,A_036,A_037,A_038,A_039,A_040,A_041,A_042,A_043,A_044,A_046,A_047,A_048,A_049,A_050,A_051,A_052,A_053,A_054,A_055,A_056,A_057,A_058,A_059,A_060,A_061,A_062,A_063,A_064,A_065,A_066,A_067,A_068,A_069,A_070,A_071,A_072,A_073
ON USER.OB01
BEGIN
UPDATE USER.OB01
set A_025 = SYSDATE;
END;
...
Рейтинг: 0 / 0
27.09.2016, 17:03:40
    #39316385
daunito
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Помогите новичку, триггер медленно выполняется!
Javl,

это феерическая жесть!
...
Рейтинг: 0 / 0
27.09.2016, 17:06:45
    #39316387
CrazyCat
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Помогите новичку, триггер медленно выполняется!
шедевр.
Код: plsql
1.
2.
UPDATE USER.OB01 
set A_025 = SYSDATE;


апдейтим все записи таблицы.
...
Рейтинг: 0 / 0
27.09.2016, 17:11:08
    #39316394
Javl
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Помогите новичку, триггер медленно выполняется!
Я же просил помощи и указать на ошибки....
...
Рейтинг: 0 / 0
27.09.2016, 17:15:41
    #39316401
Сергей Арсеньев
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Помогите новичку, триггер медленно выполняется!
Javl,

Классно троллим. :)

Тебе же и указали. Кстати, зачем обманываешь, ты же указал не все поля. Ну чтоб в рекурсию не вогнать. :)
...
Рейтинг: 0 / 0
27.09.2016, 17:19:00
    #39316407
Javl
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Помогите новичку, триггер медленно выполняется!
Я не знаю как правильно прописать, чтобы обновилась дата только в изменяемой карточке.

P.s. Еще не правильно указал, у меня AFTER, а не BEFORE !
...
Рейтинг: 0 / 0
27.09.2016, 17:22:24
    #39316409
CrazyCat
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Помогите новичку, триггер медленно выполняется!
JavlЯ же просил помощи и указать на ошибки....
http://eu.wiley.com/WileyCDA/WileyTitle/productCd-0764599577.html
есть книжка в электронном виде.
...
Рейтинг: 0 / 0
27.09.2016, 17:22:38
    #39316410
Сергей Арсеньев
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Помогите новичку, триггер медленно выполняется!
JavlЯ не знаю как правильно прописать, чтобы обновилась дата только в изменяемой карточке.
Ну так, для этого есть row level trigger. Только таблицу то зачем трогать?
Меняй значения текущей строки. Почитай в документации про :new :old
...
Рейтинг: 0 / 0
27.09.2016, 17:27:22
    #39316419
Javl
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Помогите новичку, триггер медленно выполняется!
Сергей Арсеньев,

Я пробовал, пишет NEW и OLD не может выполняться в триггере table.
...
Рейтинг: 0 / 0
27.09.2016, 17:28:43
    #39316421
CrazyCat
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Помогите новичку, триггер медленно выполняется!
JavlСергей Арсеньев,

Я пробовал, пишет NEW и OLD не может выполняться в триггере table.
даже в старых версиях оракла может, а у тебя не может
https://docs.oracle.com/cd/B10501_01/appdev.920/a96590/adg13trg.htm
...
Рейтинг: 0 / 0
27.09.2016, 17:33:48
    #39316429
Javl
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Помогите новичку, триггер медленно выполняется!
CrazyCat,

Пробую
CREATE OR REPLACE TRIGGER TRIGGER1
AFTER UPDATE
OF A_001,A_002,A_003,A_004,A_005,A_006,A_007,A_008,A_009,A_010,A_011,A_012,A_013,A_014,A_015,A_016,A_017,A_018,A_019,A_020,A_021,A_022,A_023,A_026,A_027,A_028,A_029,A_030,A_031,A_032,A_033,A_034,A_035,A_036,A_037,A_038,A_039,A_040,A_041,A_042,A_043,A_044,A_046,A_047,A_048,A_049,A_050,A_051,A_052,A_053,A_054,A_055,A_056,A_057,A_058,A_059,A_060,A_061,A_062,A_063,A_064,A_065,A_066,A_067,A_068,A_069,A_070,A_071,A_072,A_073
ON USER.OB01
BEGIN
:new.A_025 := sysdate;
END;


Error: ORA-04082: ссылки на NEW или OLD недопустимы в триггерах уровня таблицы
...
Рейтинг: 0 / 0
27.09.2016, 17:38:59
    #39316436
j2k
j2k
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Помогите новичку, триггер медленно выполняется!
Javl, неужели так сложно найти?

Код: plsql
1.
2.
3.
4.
5.
6.
7.
CREATE OR REPLACE TRIGGER UPDATE_DATE_TRG
BEFORE UPDATE
ON test_tab
FOR EACH ROW
BEGIN
  :new.col2:=sysdate;
END;
...
Рейтинг: 0 / 0
27.09.2016, 17:45:10
    #39316442
Javl
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Помогите новичку, триггер медленно выполняется!
j2k,

Спасибо огромное !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
...
Рейтинг: 0 / 0
27.09.2016, 19:52:57
    #39316533
Javl
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Помогите новичку, триггер медленно выполняется!
Javl,

Подскажите пожалуйста, как реализовать еще одну идею.
Для примера, аналогичный триггер как с датой только для пользователя

CREATE OR REPLACE TRIGGER UPDATE_DATE_TRG
BEFORE UPDATE
ON test_tab
FOR EACH ROW
BEGIN
:new.col2:=user;
END;

Есть таблица sbuser в которой поля name_user и descr, в которых имя пользователя ivanov, и его описание Иванов, хотелось бы, чтобы триггер подставлял вместо user (ivanov) значение поля descr т.е. Иванов.
...
Рейтинг: 0 / 0
27.09.2016, 20:35:50
    #39316556
dmdmdm
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Помогите новичку, триггер медленно выполняется!
Код: plsql
1.
user_descr sbuser.descr%type;



Код: plsql
1.
select descr into user_descr from sbuser where name_user = user;



Код: plsql
1.
:new.column_user := user_descr;



*посыпая голову пеплом*

Скоро здесь про "а как значение переменной присвоить" будут спрашивать.
...
Рейтинг: 0 / 0
27.09.2016, 21:07:55
    #39316563
Javl
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Помогите новичку, триггер медленно выполняется!
dmdmdm,

Спасибо, но чет не получается...
Пишет

Error(7,10): PLS-00103: Встретился символ "sbuser" в то время как ожидалось одно из следующих: := . ( @ % ; Символ ":=" заменен на "sbuser", чтобы можно было продолжать.
...
Рейтинг: 0 / 0
27.09.2016, 22:18:21
    #39316576
dmdmdm
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Помогите новичку, триггер медленно выполняется!
Кто б сомневался.
Код целиком покажите.
...
Рейтинг: 0 / 0
28.09.2016, 07:42:34
    #39316657
Elic
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Помогите новичку, триггер медленно выполняется!
Встретился символ "sbuser"Вы ещё держите деньги в Сбере?
...
Рейтинг: 0 / 0
28.09.2016, 08:28:34
    #39316668
Javl
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Помогите новичку, триггер медленно выполняется!
dmdmdm,

Все, спасибо огромное, разобрался!!!
...
Рейтинг: 0 / 0
Форумы / Oracle [игнор отключен] [закрыт для гостей] / Помогите новичку, триггер медленно выполняется! / 19 сообщений из 19, страница 1 из 1
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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