Внеочередное выполнение взаимодействия между условием и ограничением - PullRequest
0 голосов
/ 21 июня 2019

Следующий код предназначен для создания таблицы, если она еще не существует и в противном случае ничего не делается.Он отлично работает, когда условие истинно, и создает таблицу.Но когда условие ложно, оно, по-видимому, все еще выполняет ограничение и выдает ошибку, потому что ограничение из существующей таблицы, которая, очевидно, имеет то же имя, все еще присутствует.Понятия не имею, почему это происходит?HANA выполняет какие-то неупорядоченные операции под капотом, о которых я не знаю?

Примечание: я изменил все имена переменных для этого поста (если я допустил там какую-то ошибку, это не связано с моимошибка)

DO BEGIN
   DECLARE num_rows int;
   SELECT count(*) INTO num_rows FROM "X"."Y" WHERE schema_name ='Company' and table_name='table';
   IF (:num_rows <= 0 ) THEN
       CREATE COLUMN TABLE table
       (
           id_a           INTEGER,
           id_b             INTEGER NOT NULL PRIMARY KEY GENERATED BY DEFAULT AS IDENTITY,
           type            VARCHAR(64),
           opt VARCHAR(32),
           isT              SMALLINT DEFAULT 0,
           isA    SMALLINT DEFAULT 0,
           rank                INTEGER DEFAULT 0,
           CONSTRAINT UK1_table UNIQUE (id_a, type)
       );
   END IF; 
END;

ошибка:

Не удалось выполнить 'DO BEGIN DECLARE num_rows int;SELECT count (*) INTO num_rows FROM "X". "Y" WHERE ... 'SAP DBTech JDBC: [289]: нельзя использовать повторяющееся имя индекса: UK1_table или имя ограничения: UK1_table: строка 14, столбец 18 (в позиции 602)

...