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