如何在Hana sql上创建主键列并用整数值填充它

时间:2017-08-24 15:17:22

标签: sql sap primary-key hana alter-table

我搜索了但只能找到这个问题的部分答案 目标是在现有表上创建新的ID列。 这个新列将是表格的primary key,我只想让它填充从1number 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");

我相信有更简单的方法可以做到这一点

1 个答案:

答案 0 :(得分:1)

您写道,您想要在现有表格中添加&#34;新ID列&#34;并用独特的价值填充它。 那不是&#34;标准&#34;在任何DBMS中的操作,通常的假设是使用主键创建记录而不是逆向拟合。

因此,&#34;轻松&#34;对此的操作与您想要做的其他事情有关。 例如,如果您想继续使用此ID作为进一步操作的主键,那么使用像SERIES_GENERATE_INTEGER这样的一次性生成器函数或查询将非常有用,因为您必须避免重复已有的值。

我想到了两个相对简单的选择:

  1. 使用序列:

    create sequence myid;
    update <table> set ID = myid.nextval;
    

    对于后续插入:

    insert into <table> (id, ..., ...) VALUES (myid.nextval, ..., ...) ;
    

    请注意,这会为每个现有记录生成一个值,而不是一个预定义的X大小值。

  2. 使用GUID  通过使用GUID,您每次调用&#39; SYSUUID&#39;时都会生成一个唯一值。 SAP HANA中的功能。 check docu here

    这样的东西
    update <table> set ID = SYSUUID;
    

    应该在这里诀窍。

    后续插入只会调用函数来获取ID值。