插入带有自动增量参数

时间:2018-01-16 07:53:45

标签: sql select insert db2

我正在尝试使用带有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但它不起作用。

有人有想法吗?

谢谢。

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列,这样您就不必担心这种逻辑。我不建议使用序列进行大容量插入。