Почему оператор SQL ниже не работает в DB2 for z / OS? - PullRequest
0 голосов
/ 16 декабря 2010

Ниже оператор SQL прекрасно работает в DB2 LUW 9.7, но не запускается в DB2 для z / OS 9.1, почему и как заставить его работать?

CREATE TABLE HIERARCHY_TEST ( 
  HIER_URI VARCHAR(255) NOT NULL,
  PARENT_URI VARCHAR(255),
  TITLE VARCHAR(1000) NOT NULL,
  MIMETYPE VARCHAR(100),
  DESCRIPTION VARCHAR(1000),
  MODIFIED_BY VARCHAR(1000),    
  CONSTRAINT PK_SFIND_HIERARCHY PRIMARY KEY (HIER_URI ),
  CONSTRAINT FK_ND_HIERARCHY_1 FOREIGN KEY (PARENT_URI) REFERENCES HIERARCHY_TEST ( HIER_URI) 
)

Полученное сообщение об ошибке "DEV.FIND_HIERARCHY_TEST - НЕ УКАЗАНО ИМЯ. SQLCODE = -204, SQLSTATE = 42704, ДРАЙВЕР = 3.53.71 "

Спасибо.

1 Ответ

4 голосов
/ 16 декабря 2010

Причина, по которой этот оператор работает в DB2 9.7 для Linux / UNIX / Windows, потому что в DB2 9.7 добавлена ​​функция, называемая автоматической повторной проверкой.Эта функция не существует в DB2 9.1 для z / OS.

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

Вновь созданный объект будет недействительным, и DB2 автоматически повторно проверит его при следующем обращении к нему.Это поведение контролируется параметром конфигурации базы данных auto_reval.

Как отметил Эль Йобо в комментариях выше, если вам нужно, чтобы в обеих средах выполнялись одинаковые операторы, вам нужно удалить постороннийключевое ограничение из CREATE TABLE и выполните его как отдельный оператор ALTER TABLE.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...