如何在Hana sql上创建主键列并用整数值填充
我搜索了一下,但只能找到这个问题的部分答案 这里的目标是在现有表上创建一个新的如何在Hana sql上创建主键列并用整数值填充,sql,sap,primary-key,hana,alter-table,Sql,Sap,Primary Key,Hana,Alter Table,我搜索了一下,但只能找到这个问题的部分答案 这里的目标是在现有表上创建一个新的ID列。 这个新列将是表的主键,我只想让它填充1到行数的整数值 对此有什么疑问? 我知道我必须首先更改表以创建新列: altertableadd(ID整数) 然后我可以使用串联发电机: INSERT INTO <MYTABLE.ID> SELECT SERIES_GENERATE_INTEGER(1,1,(number of rows)); 插入选择序列生成整数(1,1,(行数)); 填写该列后,我可以
ID
列。
这个新列将是表的主键
,我只想让它填充1
到行数
的整数值
对此有什么疑问?
我知道我必须首先更改表以创建新列:
altertableadd(ID整数)代码>
然后我可以使用串联发电机:
INSERT INTO <MYTABLE.ID> SELECT SERIES_GENERATE_INTEGER(1,1,(number of rows));
插入选择序列生成整数(1,1,(行数));
填写该列后,我可以使用以下行:
ALTER TABLE <MYTABLE> ADD PRIMARY KEY ("ID");
altertable添加主键(“ID”);
我相信有一种更简单的方法可以做到这一点您写道,您希望向现有表添加一个“新ID列”,并用唯一值填充它。
这不是任何DBMS中的“标准”操作,因为通常的假设是,记录是使用主键创建的,而不是重新安装的
因此,此操作的“易用性”与您想要执行的其他操作有关。
例如,如果要继续使用此ID作为主键进行进一步操作,则使用一次性生成器函数(如SERIES\u GENERATE\u INTEGER
或查询)将不会有很大帮助,因为您必须避免重复已存在的值
我想到了两个相对简单的选择:
使用序列:
create sequence myid;
update <table> set ID = myid.nextval;
创建序列myid;
更新集ID=myid.nextval;
对于后续插入:
insert into <table> (id, ..., ...) VALUES (myid.nextval, ..., ...) ;
插入(id,…)值(myid.nextval,…);
请注意,这将为每个现有记录生成一个值,而不是预定义的一组大小X
使用GUID
通过使用GUID,您可以在每次调用SAP HANA中的“SYSUUID”函数时生成唯一值
差不多
update <table> set ID = SYSUUID;
更新集ID=SYSUUID;
我们应该在这里做这个把戏
后续的插入只需调用ID值的函数
您写道,您希望添加一个“现有表的新ID列”,并用唯一值填充它。
这不是任何DBMS中的“标准”操作,因为通常的假设是,记录是使用主键创建的,而不是重新安装的
因此,此操作的“易用性”与您想要执行的其他操作有关。
例如,如果要继续使用此ID作为主键进行进一步操作,则使用一次性生成器函数(如SERIES\u GENERATE\u INTEGER
或查询)将不会有很大帮助,因为您必须避免重复已存在的值
我想到了两个相对简单的选择:
使用序列:
create sequence myid;
update <table> set ID = myid.nextval;
创建序列myid;
更新集ID=myid.nextval;
对于后续插入:
insert into <table> (id, ..., ...) VALUES (myid.nextval, ..., ...) ;
插入(id,…)值(myid.nextval,…);
请注意,这将为每个现有记录生成一个值,而不是预定义的一组大小X
使用GUID
通过使用GUID,您可以在每次调用SAP HANA中的“SYSUUID”函数时生成唯一值
差不多
update <table> set ID = SYSUUID;
更新集ID=SYSUUID;
我们应该在这里做这个把戏
后续的插入只需调用ID值的函数