我正在使用具有以下表结构的Oracle 12c:-
CREATE TABLE patients (
patient_id Integer NOT NULL,
customer_id Integer NOT NULL,
title varchar(5) NOT NULL,
fname varchar(125) NOT NULL,
lname varchar(125) NOT NULL,
dob date NOT NULL,
is_medical_card NUMBER(1) NOT NULL CHECK (is_medical_card IN (0,1)),
scheme_number Integer NOT NULL,
status varchar(50) NOT NULL,
created_on date NOT NULL,
last_update_date date NOT NULL,
consent_flag NUMBER(1) NOT NULL CHECK (consent_flag IN (0,1)),
relationship varchar(50) NOT NULL
);
patient_id
是我的主键,因此现在我也要使其自动递增,因此请让我知道如何使其自动递增。
谢谢!
需要为现有列创建自动增量。
答案 0 :(得分:0)
您可能想使用Identities
-使用Identity创建表可以省略ID
值,并让Oracle在所需列上使用序列:
1。让我们创建表:
CREATE TABLE identities (
id NUMBER GENERATED BY DEFAULT ON NULL AS IDENTITY,
description varchar2(100) NOT NULL
);
表已创建。
2。您需要创建一个主键以确保唯一性:
alter table identities add constraint id_pk primary key (ID);
表已更改。
3。让我们以不同的方式插入一些数据:
INSERT INTO identities (description)
VALUES('Insert Description omitting ID');
已创建1行。
INSERT INTO identities (id,description)
VALUES(NULL,'Insert with explicit NULL value');
已创建1行。
4。保存已完成的工作
commit;
提交完成。
5。检查结果
select * from identities;
ID DESCRIPTION
---------- ---------------------------------------------
1 Insert Description omitting ID
2 Insert with explicit NULL value
如您所见,我们没有为ID
指定任何数字,但是Identity
列上的ID
为我们做了
注意:请记住,您可以手动插入ID
,但这将与Identity
混淆,就像通常使用标准{{1} }:
Sequence
此错误,因为它试图在之前用该语句手动插入的ID中插入“ 3”。
检查表格:
INSERT INTO identities (id,description)
VALUES(3,'Manually insert an ID value');
1 row created.
INSERT INTO identities (description)
VALUES('Test Nextval');
INSERT INTO identities (description)
*
ERROR at line 1:
ORA-00001: unique constraint (XXX.ID_PK) violated
重新运行“ NEXTVAL”插入:
select * from identities;
ID DESCRIPTION
---------- ---------------------------------------------
1 Insert Description omitting ID
2 Insert with explicit NULL value
3 Manually insert an ID value
已创建1行。
重新检查表格:
INSERT INTO identities (description)
VALUES('Test Nextval');
希望这会有所帮助。