以下代码旨在创建表(如果尚不存在),否则不执行任何操作。当条件为true时,它可以正常工作,并构造表。但是,当条件为false时,它似乎仍会执行约束并引发错误,因为显然存在相同名称的现有表中的约束仍然存在。我不知道为什么会这样? 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;
错误:
无法执行'开始BECLIN声明num_rows int; SELECT count(*)从“ X”。“ Y”到num_rows ...' SAP DBTech JDBC:[289]:不能使用重复的索引名称:UK1_table或约束名称:UK1_table:第14行第18行(在pos 602处)