Операция обновления не удалась с SQLCODE=-803, как устранить неполадки?

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

update table_Name set Col1 = 'C' 
where date(TRN_SCH_DPT_DT)  < current date - 200 DAYS 

Работает отлично!

update table_Name set Col1 = 'C'
where date(TRN_SCH_DPT_DT)  < current date - 100 DAYS

Выдает ошибку => Ошибка SQL DB2:

SQLCODE=-803, SQLSTATE=23505, SQLERRMC=2

Примечание. Я не обновляю первичный ключ. Любое число больше 200 работает нормально.

Найдите уникальное ограничение, которое вы нарушаете, и исправьте его. Лучше использовать MERGE для таких случаев.

mao 08.02.2019 20:50

Примечание: Ваш текущий запрос, возможно, игнорирует любой индекс, который может быть у вас на TRN_SCH_DPT_DT. Было бы лучше, если бы вы написали условие как WHERE TRN_SCH_DPT_DT < TIMESTAMP(CURRENT DATE - 100 DAYS)

Clockwork-Muse 08.02.2019 21:48
ReactJs | Supabase | Добавление данных в базу данных
ReactJs | Supabase | Добавление данных в базу данных
Это и есть ваш редактор таблиц в supabase.👇
Понимание Python и переход к SQL
Понимание Python и переход к SQL
Перед нами лабораторная работа по BloodOath:
0
2
632
1

Ответы 1

В описании SQL0803N есть оператор SELECT, который может помочь вам найти уникальный индекс (с IID=2), который пытается нарушить ваш оператор.

SELECT INDNAME, INDSCHEMA
FROM SYSCAT.INDEXES
WHERE IID = 2
AND TABSCHEMA = 'TABLE_SCHEMA' AND TABNAME = 'TABLE_NAME'

Возможно, вы захотите включить в свой ответ основные моменты из ссылки, чтобы ссылка не устарела.

mustaccio 09.02.2019 01:08

Другие вопросы по теме