我搜索了但只能找到这个问题的部分答案
目标是在现有表上创建新的ID
列。
这个新列将是表格的primary key
,我只想让它填充从1
到number of rows
的整数值。
对此的查询是什么? 我知道我必须先改变表来创建新列:
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");
我相信有更简单的方法可以做到这一点
答案 0 :(得分:1)
您写道,您想要在现有表格中添加&#34;新ID列&#34;并用独特的价值填充它。 那不是&#34;标准&#34;在任何DBMS中的操作,通常的假设是使用主键创建记录而不是逆向拟合。
因此,&#34;轻松&#34;对此的操作与您想要做的其他事情有关。
例如,如果您想继续使用此ID作为进一步操作的主键,那么使用像SERIES_GENERATE_INTEGER
这样的一次性生成器函数或查询将非常有用,因为您必须避免重复已有的值。
我想到了两个相对简单的选择:
使用序列:
create sequence myid;
update <table> set ID = myid.nextval;
对于后续插入:
insert into <table> (id, ..., ...) VALUES (myid.nextval, ..., ...) ;
请注意,这会为每个现有记录生成一个值,而不是一个预定义的X大小值。
使用GUID 通过使用GUID,您每次调用&#39; SYSUUID&#39;时都会生成一个唯一值。 SAP HANA中的功能。 check docu here
像
这样的东西update <table> set ID = SYSUUID;
应该在这里诀窍。
后续插入只会调用函数来获取ID值。