|
|
|
как вызвать функцию через триггер?
|
|||
|---|---|---|---|
|
#18+
Здравствуйте. У меня есть таблица. TMP_TEST_TABLE (COL1 NUMBER (ИД), COL2 NUMBER, COLSUM NUMBER) Я написала триггер, который заполняет поле COLSUM из этой таблицы по мере заполнения поля соl2 из этой же таблицы: create or replace trigger TR_TBL_TEST before insert on TMP_TEST_TABLE for each row begin :new.colsum := :new.col2; end TR_TBL_TEST; Все работает. Я решила попробовать вызвать в триггере функцию, выполняющую то же действие: create or replace FUNCTION F_NEW1 (v_COL1 IN number ) RETURN NUMBER IS RESULT NUMBER; v_COL2 NUMBER; BEGIN SELECT COL2 INTO v_COL2 FROM TMP_TEST_TABLE WHERE COL1 = v_COL1; result:= v_COL2; RETURN(RESULT); END; create or replace trigger TR_TBL_TEST before insert on TMP_TEST_TABLE for each row begin :new.colsum := F_NEW1(:new.col1); end TR_TBL_TEST; Ничего не получилось. Ошибка: One error saving changes to table "SYSTEM"."TMP_TEST_TABLE": Row 6: ORA-01403: no data found ORA-01403: no data found ORA-06512: at "SYSTEM.F_NEW", line 11 ORA-06512: at "SYSTEM.TR_TBL_TEST", line 2 ORA-04088: error during execution of trigger 'SYSTEM.TR_TBL_TEST' ORA-06512: at line 1 То же самое, если делаю так: create or replace trigger TR_TBL_TEST after insert-- or update on TMP_TEST_TABLE for each row DECLARE v_col1 number; begin select col1 into v_col1 from TMP_TEST_TABLE; insert into TMP_TEST_TABLE (COLSUM) values(f_new1(v_col1)); end TR_TBL_TEST; Что я делаю не так??? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 09.09.2016, 16:24:09 |
|
||
|
как вызвать функцию через триггер?
|
|||
|---|---|---|---|
|
#18+
sonrisa before insertВ это время этой строки ещё нет, чтобы её select-ить. А потом будешь спрашивать, почему mutating. В общем, рано в триггера суешься… ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 09.09.2016, 16:41:22 |
|
||
|
как вызвать функцию через триггер?
|
|||
|---|---|---|---|
|
#18+
sonrisabefore insertзачем нужна функция, если значение уже есть? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 09.09.2016, 16:41:44 |
|
||
|
как вызвать функцию через триггер?
|
|||
|---|---|---|---|
|
#18+
Elic, может вы, великий умник, скажете тогда как правильно. То, что не правильно я делаю, я знаю. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 09.09.2016, 16:44:14 |
|
||
|
как вызвать функцию через триггер?
|
|||
|---|---|---|---|
|
#18+
-2-, какого значения? нет там значения. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 09.09.2016, 16:45:40 |
|
||
|
как вызвать функцию через триггер?
|
|||
|---|---|---|---|
|
#18+
sonrisaскажете тогда как правильно Никак. У неправильных задач нет правильных решений. Posted via ActualForum NNTP Server 1.5 ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 09.09.2016, 16:46:32 |
|
||
|
как вызвать функцию через триггер?
|
|||
|---|---|---|---|
|
#18+
sonrisa, Правильно дропнуть COL2. Таблицы с одной колонкой очень удобны и среди них особенно полезны с одной строкой. Кто в оракле не пользуется dualом?! А сколько из него получают замечательных данных... ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 09.09.2016, 16:47:36 |
|
||
|
как вызвать функцию через триггер?
|
|||
|---|---|---|---|
|
#18+
sonrisaвеликий умник, скажете тогда как правильно. http://www.bugtraq.ru/forum/faq/general/smart-questions.html] RTFM ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 09.09.2016, 16:48:49 |
|
||
|
как вызвать функцию через триггер?
|
|||
|---|---|---|---|
|
#18+
sonrisa, сформулрируй, задачу, которую ты решаешь, пожалуйста. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 09.09.2016, 16:58:06 |
|
||
|
как вызвать функцию через триггер?
|
|||
|---|---|---|---|
|
#18+
sonrisaкакого значения? нет там значения. Что и приводит к ошибке "No data found". Что, собственно, и переводится как "нет там значения". Posted via ActualForum NNTP Server 1.5 ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 09.09.2016, 16:58:07 |
|
||
|
как вызвать функцию через триггер?
|
|||
|---|---|---|---|
|
#18+
Dimitry Sibiryakov, No No No, Data Found-таки! ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 09.09.2016, 17:23:27 |
|
||
|
как вызвать функцию через триггер?
|
|||
|---|---|---|---|
|
#18+
Бельфяsonrisa, сформулрируй, задачу, которую ты решаешь, пожалуйста.Дама при вставке строки хочет присваивать третьему атрибуту значение второго атрибута. Но при этом хочет получать это значение лукапом по первому атрибуту из таблицы. Элик ей все расжевал в первом же ответе, но она оказалась настолько ранима, что пропустила его слова мимо ушей. Пиши, если еще чего повторно сформулировать надо. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 09.09.2016, 17:28:58 |
|
||
|
как вызвать функцию через триггер?
|
|||
|---|---|---|---|
|
#18+
dbms_photoshop, название столбца, в который идет вставка наталкивает на мысль, что там должна быть накопленная сумма. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 09.09.2016, 22:37:51 |
|
||
|
как вызвать функцию через триггер?
|
|||
|---|---|---|---|
|
#18+
авторназвание столбца, в который идет вставка наталкивает на мысль, что там должна быть накопленная сумма я бы предположил, что тогда нужен AFTER-TRIGGER ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 09.09.2016, 23:03:03 |
|
||
|
как вызвать функцию через триггер?
|
|||
|---|---|---|---|
|
#18+
xenixавторназвание столбца, в который идет вставка наталкивает на мысль, что там должна быть накопленная сумма я бы предположил, что тогда нужен AFTER-TRIGGERосталось нагадать, зачем была "функция" с селектом значения, которое и так в наличии. если предположить межстрочную агрегацию, то эту денормальщину надо рубить где-то раньше, на корню... на том корню, которым зачали архитектора этого чуда. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 10.09.2016, 00:40:25 |
|
||
|
как вызвать функцию через триггер?
|
|||
|---|---|---|---|
|
#18+
xenixавторназвание столбца, в который идет вставка наталкивает на мысль, что там должна быть накопленная сумма я бы предположил, что тогда нужен AFTER-TRIGGER Код: plsql 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. ...... stax ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 10.09.2016, 09:30:10 |
|
||
|
|

start [/forum/topic.php?fid=52&msg=39306768&tid=1887488]: |
0ms |
get settings: |
12ms |
get forum list: |
14ms |
check forum access: |
3ms |
check topic access: |
3ms |
track hit: |
190ms |
get topic data: |
8ms |
get forum data: |
2ms |
get page messages: |
51ms |
get tp. blocked users: |
1ms |
| others: | 243ms |
| total: | 527ms |

| 0 / 0 |
