2016-08-23 6 views
-2

Эта ошибка: Сообщение: oci_execute(): ORA-00001: ограничение уникальности (SCHEMA_NAME.NAME CONSTRAINT) нарушаетсяCodeigniter ORA-00001: ограничение уникальности

Интересно, если я не знаю, как обработать ошибку более просто, более общий.

Потому что в противном случае мне придется работать над каждой функцией моделей, чтобы проверить данные перед добавлением, без дублирования и не указывать вышеописанную ошибку.

Кто-нибудь знает простой способ решить эту проблему?

Спасибо.

+1

Вы не показываете свое определение таблицы или что это за ограничение, но если вы пытаетесь вставить строки с двойными значениями, имеющими ограничение, то, вероятно, что-то не так с вашим приложением. – OldProgrammer

ответ

0

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

«IGNORE_ROW_ON_DUPKEY_INDEX намека распространяется только на операции INSERT из одной таблицы. Она не поддерживается для UPDATE, DELETE, MERGE или многотабличные операции вставки. IGNORE_ROW_ON_DUPKEY_INDEX вызывает утверждение игнорировать нарушение уникального ключа для определенного набора столбцов или для определенного индекса. Когда встречается уникальное нарушение ключа, происходит откат на уровне строк, и выполнение возобновляется со следующей строки ввода ».

+0

Извините, позвольте мне объяснить. В некоторых случаях база данных не позволяет вставлять дубликаты данных. Я знаю, что смогу обработать его при создании вставки, убедитесь, что эта запись еще не зарегистрирована. Проблема в том, что эта система готова, и у меня будет много и много экранов для изменения. Я хотел знать, не могу ли я обработать эту ошибку, чтобы получить ее возврат и сообщить пользователю сообщение. Поэтому я не стал бы менять ряд методов в разных моделях. спасибо. –