|
|
|
Почему триггер after insert on each row вызывает ошибку мутации после единичной вставки?
|
|||
|---|---|---|---|
|
#18+
Почему вызывает ошибку триггер after insert on each row после вставки вида insert into.. select - понятно: оператор в теле триггера может не обработать строки (если, конечно, по условию их нужно будет обработать), которые еще не вставлены в таблицу, т.е. таблица находится в рассогласованном состоянии. Но почему ошибка вызывается после insert into.. values, когда понятно, что была вставлена всего одна строка и таблица к моменту срабатывания триггера находится уже в согласованном состоянии - неясно. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 19.11.2017, 01:03 |
|
||
|
Почему триггер after insert on each row вызывает ошибку мутации после единичной вставки?
|
|||
|---|---|---|---|
|
#18+
Glashutteтаблица к моменту срабатывания триггера находится уже в согласованном состоянииТебе только кажется. Сточный триггер не должен зависеть от изменений, произведённых вызвавшей его командой. Этому удовлетворяет только before insert. А вообще лучше всего исходить из того, что мутирует всегда. Потому что даже before insert values мутирует в определённых случаях. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 19.11.2017, 07:28 |
|
||
|
Почему триггер after insert on each row вызывает ошибку мутации после единичной вставки?
|
|||
|---|---|---|---|
|
#18+
Поясните Вашу мысль. Что значит "кажется"? В таблицу была вставлена одна строка - больше ничего. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 19.11.2017, 14:31 |
|
||
|
Почему триггер after insert on each row вызывает ошибку мутации после единичной вставки?
|
|||
|---|---|---|---|
|
#18+
Вы предлагаете Oracle написать разные виды строчных триггеров - для одной строки и не для одной? Для вашего случая есть триггер after statement. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 19.11.2017, 14:53 |
|
||
|
Почему триггер after insert on each row вызывает ошибку мутации после единичной вставки?
|
|||
|---|---|---|---|
|
#18+
Триггер Before Insert - давно анализирует эти два случая. Он не вызывает ошибку мутации при однострочной вставке. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 19.11.2017, 15:25 |
|
||
|
Почему триггер after insert on each row вызывает ошибку мутации после единичной вставки?
|
|||
|---|---|---|---|
|
#18+
GlashutteТриггер Before Insert - давно анализирует эти два случая. Он не вызывает ошибку мутации при однострочной вставке. Не совсем. Это ты знаешь твой insert вставит 1 строку. Oracle понятия не имеет. Посему он базирует решение исходя из INSERT VALUES или INSERT SELECT. В первом случае Oracle точно знает - вставка одной строки и посему DML на triggering table в BEFORE ROW триггер не даст "table is mutating". При INSERT SELECT BEFORE ROW триггер даст "table is mutating" независимо от числа вставляемых строк ибо Oracle заранее не знает 1 строка или нет. А вот в AFTER ROW триггере 1 строка или много значения не имеет ведь изменение на уровне строк уже есть а на уровне таблицы еще в процессе. SY. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 19.11.2017, 16:54 |
|
||
|
Почему триггер after insert on each row вызывает ошибку мутации после единичной вставки?
|
|||
|---|---|---|---|
|
#18+
То есть отследить то, что проводилась операция insert into..values в before insert - можно, а в after insert - уже нельзя? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 20.11.2017, 01:51 |
|
||
|
Почему триггер after insert on each row вызывает ошибку мутации после единичной вставки?
|
|||
|---|---|---|---|
|
#18+
GlashutteТо есть отследить то, что проводилась операция insert into..values в before insert - можно, а в after insert - уже нельзя?Нельзя же быть настолько …упертым. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 20.11.2017, 07:23 |
|
||
|
Почему триггер after insert on each row вызывает ошибку мутации после единичной вставки?
|
|||
|---|---|---|---|
|
#18+
Я думаю, что, если ты не владеешь темой - можно просто промолчать, а не пытаться вставить пять копеек непонятно зачем :) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 20.11.2017, 09:15 |
|
||
|
Почему триггер after insert on each row вызывает ошибку мутации после единичной вставки?
|
|||
|---|---|---|---|
|
#18+
GlashutteЯ думаю, что, если ты не владеешь темой - можно просто промолчать, а не пытаться вставить пять копеек непонятно зачем :)Ламер, не воинствуй в своих упрямых надеждах. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 20.11.2017, 09:42 |
|
||
|
Почему триггер after insert on each row вызывает ошибку мутации после единичной вставки?
|
|||
|---|---|---|---|
|
#18+
У некоторых и insert into .. values мутирует.. в некоторых случаях ;) Только в Oracle об этом не знают ) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 20.11.2017, 09:48 |
|
||
|
Почему триггер after insert on each row вызывает ошибку мутации после единичной вставки?
|
|||
|---|---|---|---|
|
#18+
GlashutteУ некоторых и insert into .. values мутирует.. в некоторых случаях ;) Только в Oracle об этом не знают )Они-то знают, а вот ты свои "знания" напрасно выпячиваешь. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 20.11.2017, 09:51 |
|
||
|
Почему триггер after insert on each row вызывает ошибку мутации после единичной вставки?
|
|||
|---|---|---|---|
|
#18+
Если я чего-то не знаю или недопонимаю, то я - спрашиваю. Я знаю, что на этом форуме - сразу начинается кудахтанье на тему "ты дурак" или "читай доки". Мнение таких - меня мало интересует, я бы таких на советскую банку из-под майонеза сажал, чтобы впредь неповадно кукарекать было, когда серьезные вопросы обсуждаются. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 20.11.2017, 10:31 |
|
||
|
Почему триггер after insert on each row вызывает ошибку мутации после единичной вставки?
|
|||
|---|---|---|---|
|
#18+
GlashutteТо есть отследить то, что проводилась операция insert into..values в before insert - можно, а в after insert - уже нельзя? конечно можно, но проверять то и не надо у меня чуть другая версия в before состояние таблички известно, она чистая - еще не изменена оператором, а в after уже внесены изменения и "неизвестно" как представить результат напр чтения вот она и мутирует можно было БЫ в after в любом случае плевать на мутацию, но имеем что имеем ..... stax ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 20.11.2017, 10:45 |
|
||
|
Почему триггер after insert on each row вызывает ошибку мутации после единичной вставки?
|
|||
|---|---|---|---|
|
#18+
Stax, вот я так же подумал - что у нее простааляется признак "таблица изменена", а дальше при попытке обращения из строчного триггера в нее прописано - сваливаться в ошибку, не анализируя причин изменения. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 20.11.2017, 10:58 |
|
||
|
Почему триггер after insert on each row вызывает ошибку мутации после единичной вставки?
|
|||
|---|---|---|---|
|
#18+
GlashutteЕсли я чего-то не знаю или недопонимаю, то я - спрашиваю.Ну так ты спроси прямо, не стесняйся. GlashutteЯ знаю, что на этом форуме - сразу начинается кудахтанье на тему "ты дурак" или "читай доки". Мнение таких - меня мало интересует,Ну тогда ты должен знать, что потрындеть - это в ПТ, а знания - в документации. Glashutteя бы таких на советскую банку из-под майонеза сажал, чтобы впредь неповадно кукарекать было, когда серьезные вопросы обсуждаются.Сколько гонору-то. - Самовлюблённый магистр что-ли? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 20.11.2017, 10:59 |
|
||
|
Почему триггер after insert on each row вызывает ошибку мутации после единичной вставки?
|
|||
|---|---|---|---|
|
#18+
GlashutteStax, вот я так же подумал - что у нее простааляется признак "таблица изменена", а дальше при попытке обращения из строчного триггера в нее прописано - сваливаться в ошибку, не анализируя причин изменения. зачем анализировать причину? изменена (в after я так понимаю, таблица не может быть не изменена) , слетаем is mutating ..... stax ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 20.11.2017, 11:21 |
|
||
|
Почему триггер after insert on each row вызывает ошибку мутации после единичной вставки?
|
|||
|---|---|---|---|
|
#18+
Stax, если бы можно было анализировать причину - не было бы ошибки мутации в after insert после insert into.. values (???) Если таблица при этом может оказаться в рассогласованном состоянии - я хотел, чтобы мне объяснили это. Вместо этого я, как всегда, услышал "ты просто дурак и поэтому не понимаешь" (это относится никоим образом не к Вам). ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 20.11.2017, 11:46 |
|
||
|
Почему триггер after insert on each row вызывает ошибку мутации после единичной вставки?
|
|||
|---|---|---|---|
|
#18+
GlashutteStax, если бы можно было анализировать причину - не было бы ошибки мутации в after insert после insert into.. values (???) Если таблица при этом может оказаться в рассогласованном состоянии - я хотел, чтобы мне объяснили это. Вместо этого я, как всегда, услышал "ты просто дурак и поэтому не понимаешь" (это относится никоим образом не к Вам). лично я, например, не вижу (в большинстве случаев) причин возникновения мутации в after все ж понятно другое дело, что оракля считает по другому, так им жить проще .... stax ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 20.11.2017, 12:16 |
|
||
|
Почему триггер after insert on each row вызывает ошибку мутации после единичной вставки?
|
|||
|---|---|---|---|
|
#18+
Stax, Приятно встретить здесь адекватного человека. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 20.11.2017, 12:57 |
|
||
|
Почему триггер after insert on each row вызывает ошибку мутации после единичной вставки?
|
|||
|---|---|---|---|
|
#18+
SY, Не могли бы Вы поподробнее рассказать насчет изменения на уровне строк и таблицы? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 20.11.2017, 20:49 |
|
||
|
Почему триггер after insert on each row вызывает ошибку мутации после единичной вставки?
|
|||
|---|---|---|---|
|
#18+
Staxлично я, например, не вижу (в большинстве случаев) причин возникновения мутации в after все ж понятно другое дело, что оракля считает по другому, так им жить проще Это потому, что Вы знаете (или думаете, что знаете) логику своего приложения в каждом конкретном случае и, как правило, рассматриваете только поведение этого приложения в однопользовательском последовательном режиме: одна сессия, одна транзакция, последовательные построчные изменения. Оракл же ничего не знает ни о Вашем приложении, ни о Ваших намерениях что-то сделать в транзакции. Зато Оракл знает, что он обязан гарантировать а) атомарность стейтментов (всё или ничего) и одновременно б) консистентное состояние БД на протяжении всего времени выполнения стейтмента. Поскольку BEFORE|AFTER EACH ROW триггер видит таблицу во время выполнения стейтмента, Оракл обязан гарантировать, что она не изменилась с начала выполнения стейтмента, что, в данном случае, гарантировать в принципе невозможно - в таблицу только что была вставлена одна или более строк, так что она уже не такая, как была на начало выполнения. А на начало выполнения строки там не было, так что триггер её и увидеть в принципе не может. Бум, ORA-04091. А вот AFTER STATEMENT может видеть все изменения, произведённые стейтментом, потому что он уже атомарно успешно выполнен. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 20.11.2017, 23:09 |
|
||
|
Почему триггер after insert on each row вызывает ошибку мутации после единичной вставки?
|
|||
|---|---|---|---|
|
#18+
Glashutte Не могли бы Вы поподробнее рассказать насчет изменения на уровне строк и таблицы? SQL оперирует над множествами а не над строками. T.e DML операция атомарная - имеем множество до DML и множество после DML а в середине черная дыра - "table is mutating". SY. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 20.11.2017, 23:23 |
|
||
|
Почему триггер after insert on each row вызывает ошибку мутации после единичной вставки?
|
|||
|---|---|---|---|
|
#18+
SYGlashutte Не могли бы Вы поподробнее рассказать насчет изменения на уровне строк и таблицы? SQL оперирует над множествами а не над строками. T.e DML операция атомарная - имеем множество до DML и множество после DML а в середине черная дыра - "table is mutating". SY. c insert values где черная дыра в after? ..... stax ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 21.11.2017, 09:37 |
|
||
|
Почему триггер after insert on each row вызывает ошибку мутации после единичной вставки?
|
|||
|---|---|---|---|
|
#18+
Staxc insert values где черная дыра в after? Если по-чесноку, то before row тоже "черная дыра" даже с INSERT VALUES если есть before statement триггер который может изменить triggering table. С after "черная дыра" в том что мы не дошли еще до конца даже before row тригера и понятия не имеем что будет "after" содержимым таблицы. А в большинстве случаев необходимость дергания самого себя в тригере есть признак проблем имплементации а возможно и архитектуры. SY. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 21.11.2017, 16:01 |
|
||
|
|

start [/forum/topic.php?fid=52&msg=39555995&tid=1884875]: |
0ms |
get settings: |
8ms |
get forum list: |
13ms |
check forum access: |
3ms |
check topic access: |
3ms |
track hit: |
150ms |
get topic data: |
11ms |
get forum data: |
2ms |
get page messages: |
66ms |
get tp. blocked users: |
1ms |
| others: | 202ms |
| total: | 459ms |

| 0 / 0 |
