如何在PL SQL Developer中将列修改为自动递增?

时间:2019-01-08 09:44:10

标签: sql oracle oracle10g ddl identity-column

我已经在PL SQL Developer中创建了一个表。

CREATE TABLE Patient_List
(
   Patient_ID number NOT NULL,
   Patient_Name varchar(50) NOT NULL,
   Patient_Address varchar(100) NULL,
   App_Date date NULL,
   Descr varchar(50),
   CONSTRAINT patient_pk PRIMARY KEY(Patient_ID)
);

我想自动增加Patient_ID,我尝试更改表格并修改Patient_ID列,但显示错误“无效的ALTER TABLE选项”

ALTER TABLE Patient_List
MODIFY Patient_ID NUMBER NOT NULL GENERATED ALWAYS AS IDENTITY;

请帮助,谢谢。

2 个答案:

答案 0 :(得分:2)

这是不可能的。

Oracle 10g甚至没有标识列,它们是在Oracle 12.1中引入的

但是,即使使用当前的Oracle版本,也无法将常规列转换为标识列。您将需要添加一个新的。

在标识列之前,通常的方法是创建序列和触发器以填充列。

参见此处:How to create id with AUTO_INCREMENT on Oracle?

答案 1 :(得分:0)

如果有人想将现有列修改为auto_increment,请使用以下三行

alter table Product drop column test_id;

create sequence Product_test_id_seq INCREMENT BY 1 nocache;

alter table Product add test_id Number default Product_test_id_seq.nextval not null;