自动增加列上的PK

时间:2014-03-27 14:24:19

标签: sql auto-increment sybase-ase

我没有将ID列定义为在插入时自动增加。当我每次插入新行时,如何编写插入语句以插入maxvalue +1。

如果我尝试这个,Sybase会抛出错误。有没有其他方法可以解决这个问题?

INSERT INTO TABLE(ID, FIRST_NAME,LAST_NAME) VALUES ( SELECT MAX(ID)+1 FROM TABLE,"JOHN","DOE")
  

错误:姓名' ID'在这种情况下是非法的。只有常数,   常量表达式或此处允许的变量。列名是   非法。

2 个答案:

答案 0 :(得分:2)

试试这个:

INSERT INTO TABLE(ID, FIRST_NAME,LAST_NAME) 
select MAX(ID)+1, 'JOHN','DOE' FROM TABLE

答案 1 :(得分:0)

尝试

INSERT INTO TABLE(ID, FIRST_NAME,LAST_NAME) VALUES ( SELECT MAX(ID) + 1 FROM TABLE,"JOHN","DOE")

您的代码尝试使用max id添加。所以max(id)存在然后会出现dublicate错误。但是不推荐这种方法,因为当两个用户想要添加记录时,它可能会给出相同的最大值(ID)。