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

How to create a primary key column and fill it with integer values on Hana sql

我进行了搜索,但只能找到该问题的部分答案 此处的目标是在现有 table 上创建一个新的 ID 列。 这个新列将是 table 的 primary key,我只想用从 1number 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 这样的一次性生成器函数或查询将不会很有帮助,因为您必须避免重复已经存在的值。

想到两个相对简单的选项:

  1. 使用序列:

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

    对于后续插入:

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

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

  2. 使用 GUID 通过使用 GUID,您每次在 SAP HANA 中调用 'SYSUUID' 函数时都会生成一个唯一值。 check docu here

    类似

    update <table> set ID = SYSUUID;
    

    应该在这里做这个把戏。

    后续插入将简单地为 ID 的值调用该函数。