【问题标题】:How to create a primary key column and fill it with integer values on Hana sql如何在 Hana sql 上创建主键列并用整数值填充它
【发布时间】:2017-08-24 15:17:21
【问题描述】:

我搜索但只能找到这个问题的部分答案 目标是在现有表上创建一个新的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");

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

【问题讨论】:

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


    【解决方案1】:

    您写道,您想向现有表添加一个“新 ID 列”并用唯一值填充它。 这不是任何 DBMS 中的“标准”操作,因为通常的假设是记录是使用主键创建的,而不是重新安装的。

    因此,此操作的“易用性”与您想做的其他事情有关。 例如,如果您想继续使用此 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 值的函数。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2023-03-06
      • 1970-01-01
      • 2018-09-28
      • 2021-12-10
      • 1970-01-01
      • 2019-03-27
      • 2013-12-18
      • 1970-01-01
      相关资源
      最近更新 更多