我正在尝试使用带有DB2中select语句结果的insert语句将数据插入表中。
我遇到了主键的问题,需要从特定值ex自动增加:从100上传,我应该告诉语句应该增加什么值,但它不起作用。
insert语句如下所示:
insert into table1 (col1, col2, col3, col4 ,col5)
select par1, par2, par3, par4, par5 from table2;
使用此语句会自动导入主键,这是错误的,因为它应该从特定值生成/自动增量。
我尝试创建一个变量并将其设置为par1,就像这样var1 = var1 + 1但它不起作用。
有人有想法吗?
谢谢。
答案 0 :(得分:0)
您可以先设置默认值(如果是一次加载)或某些最大值,基于SELECT MAX(col)等其他逻辑。
set initval = 100;
然后您可以使用ROW_NUMBER()函数生成运行序列。在顺序中包括将标识主键的列。
insert into table1 (genkeycol, col1, col2, col3, col4 ,col5)
select initval + row_number() over(order by par1, par2) as genkeycol
par1, par2, par3, par4, par5 from table2;
理想情况下,您应该使用GENERATED列,这样您就不必担心这种逻辑。我不建议使用序列进行大容量插入。