|
|
|
Нужна помощь с триггером
|
|||
|---|---|---|---|
|
#18+
Есть 2 таблички Table и Table2. Column2 из Table2 - ссылка на Table. Хочу, чтобы эта ссылка в Table 2 обнулялась, если столбец Column1 в Table устанавливается в 1. Создаю такой триггер CREATE OR REPLACE TRIGGER TU_TABLE AFTER UPDATE OF "COLUMN1" ON TABLE FOR EACH ROW begin if :new.COLUMN1='1' then update TABLE2 set TABLE2.COLUMN2 = null where :old.COLUMN2=TABLE2.COLUMN2; end if; END; При его срабатывании происходит ошибка: ORA-04091: table TABLE is mutating, trigger/function may not see it ORA-06512: at "TU_TABLE", line 4 ORA-04088: error during execution of trigger "TU_TABLE" Не могу понять в чем дело. Помогите, пожалуйста! ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 04.04.2003, 15:02 |
|
||
|
Нужна помощь с триггером
|
|||
|---|---|---|---|
|
#18+
Версия оракула меньше 8.1.7? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 04.04.2003, 15:17 |
|
||
|
Нужна помощь с триггером
|
|||
|---|---|---|---|
|
#18+
Delo ne v version a v prinzipe.. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 04.04.2003, 15:18 |
|
||
|
Нужна помощь с триггером
|
|||
|---|---|---|---|
|
#18+
Версия 8.0.5 ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 04.04.2003, 15:21 |
|
||
|
Нужна помощь с триггером
|
|||
|---|---|---|---|
|
#18+
В 8.1.7 и далее ограничение на мутирующие таблицы сильно ослаблены по сравнению со всеми предыдущими. Поэтому вопрос не в принципе, а в версии. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 04.04.2003, 15:24 |
|
||
|
Нужна помощь с триггером
|
|||
|---|---|---|---|
|
#18+
ORA-04091 table string.string is mutating, trigger/function may not see it Cause: A trigger (or a user defined PL/SQL function that is referenced in this statement) attempted to look at (or modify) a table that was in the middle of being modified by the statement which fired it. Action: Rewrite the trigger (or function) so it does not read that table. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 04.04.2003, 15:24 |
|
||
|
Нужна помощь с триггером
|
|||
|---|---|---|---|
|
#18+
Одним тригером необойтись.Воспользуйтесь PLSQL таблицей, создайте пакет. и триггеры BEFOR UPDATE, BEFOR UPDATE FOR EACH ROW и AFTER UPDATE. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 04.04.2003, 15:28 |
|
||
|
Нужна помощь с триггером
|
|||
|---|---|---|---|
|
#18+
Варианты переделок триггеров: 1. обновить версию оракула до 8.1.7, не переписывая триггеры. 2. убрать констрэйнты и писать проверку ссылок в триггерах. 3. сделать констрэйнты deferrable и модификации проводить из приложения, а не из триггеров. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 04.04.2003, 15:29 |
|
||
|
Нужна помощь с триггером
|
|||
|---|---|---|---|
|
#18+
For Oracle X-pert Описание к ошибке я и так нашла. Вопрос в том, можно ли написать триггер, который бы делал то, что мне нужно, и как? И почему этот не работает, я же обновление делаю в другой таблице? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 04.04.2003, 15:31 |
|
||
|
Нужна помощь с триггером
|
|||
|---|---|---|---|
|
#18+
A kak i otkuda ty delaesh Update? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 04.04.2003, 15:33 |
|
||
|
Нужна помощь с триггером
|
|||
|---|---|---|---|
|
#18+
Стандартный способ обхода мутации: в row-level триггере заполняешь некую структуру идентификаторами строк (pl/sql-таблицу, например), после чего в statement триггере производишь необходимые действия. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 04.04.2003, 15:36 |
|
||
|
Нужна помощь с триггером
|
|||
|---|---|---|---|
|
#18+
Посмотрите здесь http://govt.oracle.com/%7Etkyte/Mutate/index.html ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 04.04.2003, 15:44 |
|
||
|
Нужна помощь с триггером
|
|||
|---|---|---|---|
|
#18+
Сделай триггер на уровне оперетора UPDATE т.е. без FOR EACH ROW CREATE OR REPLACE TRIGGER TU_TABLE AFTER UPDATE OF "COLUMN1" ON TABLE ... begin update TABLE2 TT set TT.COLUMN2 = null where EXISTS (SELECT NULL FROM TU_TABLE T WHERE TT.COLUMN2 = T.ID AND T.COLUMN1 = 1); END; ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 04.04.2003, 17:39 |
|
||
|
|

start [/forum/topic.php?fid=52&msg=32133720&tid=1991156]: |
0ms |
get settings: |
6ms |
get forum list: |
9ms |
check forum access: |
2ms |
check topic access: |
2ms |
track hit: |
193ms |
get topic data: |
7ms |
get forum data: |
3ms |
get page messages: |
32ms |
get tp. blocked users: |
1ms |
| others: | 204ms |
| total: | 459ms |

| 0 / 0 |
