Специальная строка доступа DB2 в неуникальной таблице для операций обновления / удаления - PullRequest
0 голосов
/ 12 февраля 2019

у меня вопрос: могу ли я выполнить специфические для строки операции обновления / удаления в таблице DB2 с помощью SQL, в контексте первичного ключа NON QUNIQUE?

Таблица является ФИЗИЧЕСКИМ ФАЙЛОМ НА ПРИРОДНОЙ СИСТЕМЕAS / 400.Он, как и многие другие файлы, был создан без уникального определения, что приводит DB2 к выводу, что у Table или PF нет ключа qunique.

И это моя проблема.Я не могу переопределить структуру таблицы, чтобы вставить уникальный идентификатор ROW, потому что мне нужно было бы перекомпилировать ВСЕ мои соответствующие программы на AS / 400, что является серьезной проблемой, многие вещи больше не будут работать, «возможно»,Конечно, я могу сделать этот рефакторинг для одной таблицы, но в нашей системе есть тысячи таких собственных ФАЙЛОВ, некоторые отлично работают с Уникальным Ключом, некоторые без Уникального определения ...

Ну, я работаю большую часть временис db2 и sql на старых файлах.И все файлы с уникальным ключом не представляют для меня проблем с выполнением этих важных операций обновления / удаления.

Есть ли способ получить дополнительный столбец для каждого выбора с уникальным идентификатором строки, соответствующим номером строки,И, кроме того, что гораздо важнее, как я могу обновить этот RowNumber.

Я провел некоторое исследование, и тем временем я предполагаю, что нет никаких шансов сделать точные изменения или удаления, когда нет уникального ключаподарок.То, что я хотел бы, было бы некоторым дополнительным ID-ROW, который всегда посылается с таблицей, к которому я могу обратиться, когда я делаю мои операции обновления / удаления.Возможно, мое мышление здесь ошибочно, поскольку таблицы неуникальных ключей предназначены для редактирования другими способами.

1 Ответ

0 голосов
/ 12 февраля 2019

Попробуйте функцию RRN .

SELECT RRN(EMPLOYEE), LASTNAME
FROM EMPLOYEE
WHERE ...;

UPDATE EMPLOYEE
SET ...
WHERE RRN(EMPLOYEE) = ...;
...