条件和约束之间的乱序执行交互

时间:2019-06-21 15:23:17

标签: sql hana

以下代码旨在创建表(如果尚不存在),否则不执行任何操作。当条件为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处)

0 个答案:

没有答案