Хотя записи ошибок в идеале должны обрабатываться процессом, выполняющим вставку, во многих случаях это может оказаться невозможным.Вместо этого вы можете установить ограничения для таблицы для столбца Зарплата.Проверка даты может быть реализована простым наличием столбца типа данных date.Затем создайте таблицу регистрации ошибок для регистрации ошибок.
Теперь нам нужна таблица для записи ваших недействительных записей.Для этого у вас есть два варианта.Вы можете иметь таблицу INVALID_EMPLOYEES
в качестве таблицы ошибок.Но это будет означать наличие дополнительных столбцов в таблице (ORA_ERR_MESG$
и ORA_ERR_TAG$
).
Если дополнительные столбцы не доступны, вы можете создать выделенную таблицу ошибок и затем переместить записи из этой таблицы в вашу таблицу INVALID_EMPLOYEES
.Вам придется написать некоторый код, который запускается после вашего кода вставки, чтобы переместить записи.
См. Пакет DBMS_ERRLOG , чтобы узнать, как создавать таблицы регистрации ошибок.
После создания таблиц регистрации ошибок вы должны указать INSERT код для регистрации ошибок в вашей таблице регистрации ошибок.Это гарантирует, что все действительные записи будут вставлены в вашу таблицу сотрудников, а недействительные записи попадут в вашу таблицу ошибок со столбцом, в котором хранится ошибка, возникшая при вставке этой конкретной записи.Таким образом, ваш код вставки будет выглядеть примерно так:
INSERT INTO VALID_EMPLOYEES
SELECT ID,
NAME,
SALARY,
BIRTHDAY
FROM my_source_table
LOG ERRORS INTO INVALID_EMPLOYEES ('Oops this guy failed');
В этом случае сообщение «К сожалению, этот парень не удалось» попадет в столбец ORA_ERR_TAG$
таблицы ошибок.Вы можете использовать этот столбец тега для определения различных операторов вставки, которые пытались вставить неверную запись.
Надеюсь, это поможет!