2016-11-14 2 views
-1

У меня есть таблица, имя которой TestTable.Как получить новое и старое значение столбца в триггере уровня инструкций в оракуле?

Create Table TestTable(ID number,Name nvarchar2(200)) 

Я хочу написать триггер. Это триггер уровня утверждения. Мой вопрос:

  • Как получить новое и старое значение столбца в триггерах уровня инструкций в оракуле?

Я не могу использовать триггер уровня, потому что мне нужно выбрать количество строк из TestTable в триггере.

+0

Новые и старые значения недоступны в триггере инструкции. Возможно, если вы отредактируете свой вопрос и включите код для своего триггера, кто-то может предложить обходной путь. Благодарю. –

+0

Мне нужно получить новое и старое значение столбца. beacuse i обновить таблицу в триггере с инструкцией по обновлению. Когда я обновляю таблицу, я получаю мутирующую ошибку –

+0

Является ли это тегом [tag: mysql] или [tag: oracle]? – user272735

ответ

0

В качестве комментариев вы сказали, что не можете иметь доступ к :new и :old на уровне инструкций. Как вы можете определить значения строк, если триггер, который видит всю инструкцию?

Используйте compound trigger (Documentation и Example). Там вы можете написать раздел, который представляет собой уровень выписки, а другой - for each row. Подсчитайте, что вы попадете на уровень statement и получите доступ к :old и :new у вас будет на for each row section

+0

Я знаю, что он не может получить старое и новое значение в триггере уровня строки. Хорошо. но как обновить больше строк таблицы в триггере? Я могу обновить только одну строку в триггере уровня строки. и я не могу получить старое и новое значение в триггере уровня инструкции. Но как обновлять строки в триггере? например, у меня есть TestTable. и я хочу обновить строку, которая называется именем «% El%». Вы меня поняли? –

+0

@ElvinHabibov Вы можете собирать идентификаторы строк, которые вы хотите обновить, в 'для каждой строки', а затем обработать весь пакет' statement' для обновления. Я добавил вам некоторые ссылки. Если вам нужна дополнительная помощь, пожалуйста, опишите вашу проблему, какие у вас данные, что вам нужно делать и т. Д. – Kacper

+0

например. ID | ИМЯ 1 Элвин –