У меня есть две таблицы с одинаковым определением, но разными владельцами.Создана новая таблица на основе одного из них:
CREATE TABLE SHADOW.ADM LIKE USR1.ADM;
ALTER TABLE SHADOW.ADM ADD SHTYPE CHAR(1);
ALTER TABLE SHADOW.ADM ADD SHCOUNTER INTEGER GENERATED ALWAYS AS IDENTITY;
CREATE UNIQUE INDEX SHADOW.IXADM ON SHADOW.ADM(SHCOUNTER) USING STOGROUP SG1;
Когда я пытаюсь выполнить приведенный ниже SQL, я получаю синтаксическую ошибку:
INSERT INTO SHADOW.ADM
OVERRIDING USER VALUE
SELECT A.*,0 FROM
(SELECT O.*,'B' FROM USR1.ADM O UNION ALL
SELECT N.*,'A' FROM USR2.ADM N) A;
Ошибка:
OVERRIDING USER VALUE CLAUSE IS NOT PERMITTED. SQLCODE=-109, SQLSTATE=42601, DRIVER=3.72.44
Странно то, что приведенный ниже SQL выполняется без ошибок:
INSERT INTO SHADOW.ADM
OVERRIDING USER VALUE
SELECT A.*,'B',0 FROM USR1.ADM A;
Это ошибка в синтаксическом анализаторе SQL DB2 или я что-то упустил?
Кстати: это включеноDB2 для z / OS V7, доступ из DBeaver в качестве клиента.