我在德比Netbeans中创建了一个表格,现在我意识到我需要将列自动增加1,这是一个主键。我怎么能这样做?我尝试了以下代码但是徒劳无功。
ALTER TABLE ISSUERECIPT ALTER IRCODE SET INCREMENT BY 1;
我是否需要再次创建表格,还是可以通过其他方式创建表格?
答案 0 :(得分:10)
我找到了一个替代解决方案,我从数据库中删除了列(感谢vels4j)再次从netbeans derby UI添加了该列,如下所示:
答案 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)
) ;