我已经在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;
请帮助,谢谢。
答案 0 :(得分:2)
这是不可能的。
Oracle 10g甚至没有标识列,它们是在Oracle 12.1中引入的
但是,即使使用当前的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;