如何在 Hana sql 上创建主键列并用整数值填充它
How to create a primary key column and fill it with integer values on Hana sql
我进行了搜索,但只能找到该问题的部分答案
此处的目标是在现有 table 上创建一个新的 ID
列。
这个新列将是 table 的 primary key
,我只想用从 1
到 number of rows
.
的整数值填充它
查询的内容是什么?
我知道我必须先更改 table 才能创建新列:
ALTER TABLE <MYTABLE> ADD (ID INTEGER);
然后我就可以使用级数生成器了:
INSERT INTO <MYTABLE.ID> SELECT SERIES_GENERATE_INTEGER(1,1,(number of rows));
填满该列后,我可以使用这一行:
ALTER TABLE <MYTABLE> ADD PRIMARY KEY ("ID");
我相信有更简单的方法可以做到这一点
您写到要添加一个 "new ID column to an existing table" 并用唯一值填充它。
这不是任何 DBMS 中的 "standard" 操作,因为通常的假设是记录是使用主键创建的,而不是逆向安装的。
因此,"ease" 的操作与您要执行的其他操作相关。
例如,如果您想继续使用此 ID 作为进一步操作的主键,那么使用像 SERIES_GENERATE_INTEGER
这样的一次性生成器函数或查询将不会很有帮助,因为您必须避免重复已经存在的值。
想到两个相对简单的选项:
使用序列:
create sequence myid;
update <table> set ID = myid.nextval;
对于后续插入:
insert into <table> (id, ..., ...) VALUES (myid.nextval, ..., ...) ;
请注意,这会为每个现有记录生成一个值,而不是为一组预定义的大小 X。
使用 GUID
通过使用 GUID,您每次在 SAP HANA 中调用 'SYSUUID' 函数时都会生成一个唯一值。 check docu here
类似
update <table> set ID = SYSUUID;
应该在这里做这个把戏。
后续插入将简单地为 ID 的值调用该函数。
我进行了搜索,但只能找到该问题的部分答案
此处的目标是在现有 table 上创建一个新的 ID
列。
这个新列将是 table 的 primary key
,我只想用从 1
到 number of rows
.
查询的内容是什么? 我知道我必须先更改 table 才能创建新列:
ALTER TABLE <MYTABLE> ADD (ID INTEGER);
然后我就可以使用级数生成器了:
INSERT INTO <MYTABLE.ID> SELECT SERIES_GENERATE_INTEGER(1,1,(number of rows));
填满该列后,我可以使用这一行:
ALTER TABLE <MYTABLE> ADD PRIMARY KEY ("ID");
我相信有更简单的方法可以做到这一点
您写到要添加一个 "new ID column to an existing table" 并用唯一值填充它。 这不是任何 DBMS 中的 "standard" 操作,因为通常的假设是记录是使用主键创建的,而不是逆向安装的。
因此,"ease" 的操作与您要执行的其他操作相关。
例如,如果您想继续使用此 ID 作为进一步操作的主键,那么使用像 SERIES_GENERATE_INTEGER
这样的一次性生成器函数或查询将不会很有帮助,因为您必须避免重复已经存在的值。
想到两个相对简单的选项:
使用序列:
create sequence myid; update <table> set ID = myid.nextval;
对于后续插入:
insert into <table> (id, ..., ...) VALUES (myid.nextval, ..., ...) ;
请注意,这会为每个现有记录生成一个值,而不是为一组预定义的大小 X。
使用 GUID 通过使用 GUID,您每次在 SAP HANA 中调用 'SYSUUID' 函数时都会生成一个唯一值。 check docu here
类似
update <table> set ID = SYSUUID;
应该在这里做这个把戏。
后续插入将简单地为 ID 的值调用该函数。