Oracle建表並指定主鍵自增
Oracle不允許在建表時直接指定某個欄位自增,需要通過建立序列
所以想要為某個欄位指定自增,需要1.建表;2.建立序列;3.建立觸發器
一:建表語句
Oracle資料庫建表語句
ORACLE中的關鍵字這裡均用大寫表示,中括號表示可選填或不填
CREATE TABLE 表名
(
欄位名1 欄位型別 【NULL | NOTNULL 】【PRIMARY KEY①】,
欄位名2 欄位型別 【NULL | NOTNULL 】②
);
①:oracle可以通過在末尾寫PRIMARY KEY(列名)的方式指定某一個列為主鍵。
②:oracle常用欄位型別number,表示數字,可以存放整數或者小數,
number(N)表示存放N位的整數,number(N,M)表示存放長度為N的小數,精確到M位,含小數點
varchar/varchar2,二者區別讀者自己百度,這裡不做詳解。
date 日期型別,timestamp 時間戳型別
注意,oracle中沒有int和integer型別。
示例語句如下:
create table student
(
s_id number(11) not null primary key,
name varchar(20) not null,
age number(6) not null,
record_data date
);
為欄位添加註釋
comment on column student.s_id is '學生表ID';
comment on column student.name is '學生名稱';
comment on column student.age is '學生年齡';
comment on column student.record_data is '記錄時間';
二、建立自增序列
CREATE SEQUENCE 序列名 -- 建議使用表名+欄位名+seq字尾
INCREMENT BY 1 -- 每次加幾個
START WITH 1 -- 從1開始計數
NOMAXVALUE -- 不設定最大值
NOCYCLE -- 一直累加,不迴圈
NOCACHE -- 不建緩衝區
三、建立觸發器
CREATE TRIGGER 觸發器名
BEFORE INSERT 表名 FOR EACH ROW WHEN (NEW.主鍵名 IS NULL)
BEGIN
SELECT 序列名.NEXTVAL INTO:NEW.主鍵名 FROM DUAL;
END;