2013-10-11 2 views
1
CREATE TRIGGER update 
AFTER UPDATE OF pos ON table 
IF (COUNT (SELECT * FROM table WHERE pos= 'xyz') = 0) 
BEGIN 
DELETE FROM table WHERE pos = 'abc'; 
END; 

Теперь я хочу, чтобы проверить обновленную таблицу, чтобы увидеть, если он содержит значение «хуг» в attributeX, и если он не делает, а затем удалить все кортежи, которые имеют " abc 'для этой колонки. Я не уверен, как это сделать в ORACLE. Любая помощь будет оценена по достоинству. Благодаря!Как использовать оракул триггеров, не для каждой строки

ответ

3

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

Если ваше приложение основано на PL/SQL, я бы использовал подпрограмму API для выполнения обновления и включил туда код. Возможно, вам потребуется включить код DBMS_Lock для сериализации удаления.

В противном случае рассмотрите возможность переноса этой логики в транзакцию на прикладном уровне и ее запуск оттуда.

Смежные вопросы