在 DB2 中动态设置 Identity Start With

Dynamically set Identity Start With in DB2

我希望能够执行类似这样的操作来动态设置标识 START WITH 值。可能吗?

CREATE VARIABLE v_number BIGINT DEFAULT 142;
ALTER TABLE txn
  ALTER COLUMN id SET DATA TYPE BIGINT NOT NULL 
     PRIMARY KEY UNIQUE 
     GENERATED BY DEFAULT AS IDENTITY (
       START WITH v_number * 1000000, INCREMENT BY 1
     );

DDL 语句通常需要文字值,因此您需要使用动态 SQL:

CREATE VARIABLE v_number BIGINT DEFAULT 142;
EXECUTE IMMEDIATE 'ALTER TABLE txn ' ||
  'ALTER COLUMN id SET DATA TYPE BIGINT NOT NULL' || 
     'PRIMARY KEY ' || 
     'GENERATED BY DEFAULT AS IDENTITY (' ||
       'START WITH ' || v_number || '* 1000000 INCREMENT BY 1 )';

没有理由同时声明 UNIQUEPRIMARY KEY 约束 - 根据定义,主键值是唯一的。