Я использую базу данных Oracle версии 11.2.Мне нужно обновить таблицу DOCUMENT_SHARING document_id на основе того, что находится в другой таблице, правильный идентификатор должен быть выбран другим уникальным идентификатором.Один документ может иметь более одного общего доступа, а может и не быть вовсе.Как это сделать?Я застрял.
Вот примеры таблиц:
DOCUMENT
id | text | doc_id
--------------------------
6 | foo1 | 1021
120 | foo2 | 1123
123 | foo3 | 1429
121 | foo4 | 1527
998 | foo5 | 1722
542 | foo6 | 1923
DOCUMENT_SHARING
document_id | shared_to | doc_id
--------------------------------------
| human1 | 1021
| human2 | 1123
| human3 | 1429
| human4 | 1527
| human5 | 1722
| human6 | 1923
Я хочу обновить таблицу DOCUMENT_SHARING document_id, чтобы результат был таким:
DOCUMENT_SHARING
document_id | shared_to | doc_id
--------------------------------------
6 | human1 | 1021
120 | human2 | 1123
123 | human3 | 1429
121 | human4 | 1527
998 | human5 | 1722
542 | human6 | 1923
Я пробовал следующее:
UPDATE DOCUMENT_SHARING DS SET DS.document_id = (SELECT D.ID FROM DOCUMENT D WHERE D.remote_application = 'DMS' AND D.doc_id IS NOT NULL AND D.doc_id = DS.doc_id) where DS.doc_id IS NOT NULL;
Но я получаю ошибку:
Отчет об ошибке:
Ошибка SQL: ORA-01407: невозможно обновить ("SCHEMA". "DOCUMENT_SHARING "." DOCUMENT_ID ") в NULL
01407. 00000 -" невозможно обновить (% s) в NULL "
query" descr DOCUMENT_SHARING "
Name Null Type
---------------- -------- --------------
DOCUMENT_ID NOT NULL NUMBER(12)
USER_CODE NOT NULL VARCHAR2(50)
DOC_ID NUMBER(12)