如何在Hana中的现有列中添加Identity序列



我需要指定一个自动生成的id列。该表已经存在,并且有大量的数据。此外,在生产环境中很难获得停止应用程序的许可。我想随时更新表格。

是否可以更改现有表并使用标识功能丰富它?突然间,官方文档只说明了如何创建标识列,而没有说明如何将其更改为标识。

如果没有,是否可以用序列和触发器模拟功能?

-- current schema of the table
CREATE TABLE nl_status(
identificationnumber BIGINT NOT NULL PRIMARY KEY,
status varchar(25)
);

--desired functionality
CREATE TABLE nl_status(
identificationnumber BIGINT NOT NULL PRIMARY KEY GENERATED BY DEFAULT AS IDENTITY,
status varchar(25)
);

您可以尝试这种一次性逻辑将其转换为标识列。

--DROP TABLE TEST1;
CREATE TABLE TEST1 (COL1 **BIGINT NOT NULL PRIMARY KEY** , COL2 BIGINT );
INSERT INTO TEST1 (COL1, COL2) VALUES (1,1);
INSERT INTO TEST1 (COL1, COL2) VALUES (2,1);
SELECT * FROM TEST1; --2 ROWS
--DROP TABLE TEST1_BACKUP;
CREATE TABLE TEST1_BACKUP (**COL1 BIGINT GENERATED BY DEFAULT AS IDENTITY PRIMARY KEY** , COL2 BIGINT );
INSERT INTO TEST1_BACKUP SELECT * FROM TEST1; -- ONE TIME BACKUP
SELECT * FROM  TEST1_BACKUP;-- 2ROWS ALL COLUMNS INTACT AND DATA AS WELL
DROP TABLE TEST1;
**RENAME TABLE TEST1_BACKUP TO TEST1;**
INSERT INTO TEST1 ( COL2 ) VALUES (1); -- COL1 WILL GET GENERATED AUTOMATICALLY
SELECT * FROM TEST1; --COL1 WILL HAVE THE GENERATED VALUE;

最新更新