удаление триггера oracle после вставки

#sql #oracle #triggers

#sql #Oracle #триггеры

Вопрос:

У меня есть таблица «персона»

 id groupId occupation state
1  5       DIRECTOR   RETIREMENT
2  5       TEACHER    VACATION
3  4       DIRECTOR   ACTIVE
 

Мне нужен триггер, который удаляет новую вставленную строку, если она имеет тот же идентификатор группы, то же занятие и состояние АКТИВНЫ.
Например:
Если я вставлю строку с groupId 4, function Teacher, укажите где угодно — все в порядке.
Если я вставлю строку с groupId 4, директор функции, государственный ПРАЗДНИК — все в порядке.
Но если я вставлю строку с groupId 4, function Director, состояние АКТИВНОЕ, она должна быть удалена после вставки

Ответ №1:

Не используйте триггер для этого. Просто используйте уникальное ограничение или индекс:

 alter table person add constraint unq_person_groupid_function
    unique (groupid, function);
 

В качестве примечания: function это плохой выбор для имени столбца, потому что это ключевое слово SQL.

Комментарии:

1. Нет, но вы можете эмулировать отфильтрованный индекс, если это то, что вам действительно нужно.