更改表格列,在德比中自动增加1

时间:2013-01-14 09:53:44

标签: sql database derby

我在德比Netbeans中创建了一个表格,现在我意识到我需要将列自动增加1,这是一个主键。我怎么能这样做?我尝试了以下代码但是徒劳无功。

ALTER TABLE ISSUERECIPT ALTER IRCODE SET INCREMENT BY 1;

我是否需要再次创建表格,还是可以通过其他方式创建表格?

8 个答案:

答案 0 :(得分:10)

我找到了一个替代解决方案,我从数据库中删除了列(感谢vels4j)再次从netbeans derby UI添加了该列,如下所示:

enter image description here

答案 1 :(得分:4)

要更改要自动生成的列,代码为

ALTER TABLE ISSUERECIPT ALTER IRCODE SET INCREMENT BY 1;

但必须已使用IDENTITY属性定义列(如此documentation中所述)。

在大多数情况下(假设您也是如此),主键列未设置为IDENTITY。因此,您可能打算将列更改为IDENTITY,但这是不可能的。

唯一的方法是删除表并再次创建,如here所示。

答案 2 :(得分:2)

检查

ALTER TABLE ISSUERECIPT 
ALTER IRCODE INTEGER NOT NULL 
GENERATED ALWAYS AS IDENTITY (START WITH 1, INCREMENT BY 1);

如果您的表格为空,请尝试此操作

ALTER TABLE DROP  PRIMARY KEY your_primaryKeyContrainName ; 
ALTER TABLE ISSUERECIPT DROP COLUMN IRCODE ;
ALTER TABLE ISSUERECIPT ADD COLUMN 
IRCODE PRIMARY KEY INTEGER NOT NULL 
GENERATED ALWAYS AS IDENTITY (START WITH 1, INCREMENT BY 1);

另请参阅: Derby ALTER TABLE Syntax

答案 3 :(得分:1)

ALTER TABLE tbl ADD id INT PRIMARY KEY AUTO_INCREMENT;

答案 4 :(得分:1)

ALTER TABLE ISSUERECIPT  ADD IRCODE INTEGER NOT NULL primary key GENERATED ALWAYS AS IDENTITY (START WITH 1, INCREMENT BY 1),

我想可以为你做点什么

答案 5 :(得分:0)

ALTER TABLE 语句不能向表中添加 IDENTITY 列

如果您的表是空的或不在生产中。删除表并再次创建,例如:

DROP TABLE CUSTOMER;
CREATE TABLE CUSTOMER
(CUSTOMER_ID INTEGER NOT NULL GENERATED ALWAYS AS IDENTITY (START WITH 1, INCREMENT BY 
1),
FIRSTNAME VARCHAR(100) NOT NULL,VARCHAR(100),
PREFERRED_ID INTEGER,
CONSTRAINT primary_key PRIMARY KEY (CUSTOMER_ID)
);

答案 6 :(得分:-1)

试试这个:

alter table ISSUERECIPT modify column IRCODE int(4) auto_increment

答案 7 :(得分:-1)

再次重新创建表格,请参阅下面的示例:

CREATE TABLE students
(
id INTEGER NOT NULL GENERATED ALWAYS AS IDENTITY (START WITH 1, INCREMENT BY 1),
name VARCHAR(24) NOT NULL,
address VARCHAR(1024),
CONSTRAINT primary_key PRIMARY KEY (id)
) ;