orcale
Oracle沒有自動增長機制,需要自己去實現。一般有兩種方式,但是這兩種方式都與序列化有關。
第一種方式:序列化+觸發器;
第二種方式:序列化+顯示調用序列化。
准備工作建表:
//准備工作創建一張表 create table dept_p( dept_id VARCHAR2(40) not null, dept_name VARCHAR2(40), parent_id VARCHAR2(40), state NUMBER(11), dept_sort NUMBER(11) ); alter table DEPT_P add [constraint dept_id] primary key(dept_id);
方式一:序列化+觸發器
第一步:創建序列sequence
create sequence seq_t_dept minvalue 1 maxvalue 99999999 start with 1 increment by 1 cache 50
第二步:建立觸發器
觸發器的語法: create [or replace] tigger 觸發器名 觸發時間 觸發事件 on 表名 [for each row] begin pl/sql語句 end 其中: 觸發器名:觸發器對象的名稱。由於觸發器是數據庫自動執行的,因此該名稱只是一個名稱,沒有實質的用途。 觸發時間:指明觸發器何時執行,該值可取: before:表示在數據庫動作之前觸發器執行; after:表示在數據庫動作之后觸發器執行。 觸發事件:指明哪些數據庫動作會觸發此觸發器: insert:數據庫插入會觸發此觸發器; update:數據庫修改會觸發此觸發器; delete:數據庫刪除會觸發此觸發器。 表 名:數據庫觸發器所在的表。 for each row:對表的每一行觸發器執行一次。如果沒有這一選項,則只對整個表執行一次。
//:new表示新插入的那條記錄
create or replace trigger "dept_trig" before insert on dept_p referencing old as old new as new for each row declare begin select seq_t_dept.nextval into :new.dept_sort from dual; end dept_trig;
第三步:插入數據測試看dept_sort是否自增
insert into dept_p values('001', '安保部', '000', 1); select * from dept_p;
方式二:序列化+顯示調用
第一步:創建序列sequence
//創建sequence create sequence seq_on_dept increment by 1 start with 1 nomaxvalue nocycle nocache;
第二步:顯示調用序列
insert into dept_p values('001', '安保部', '000', 1, seq_on_dept.nextval);
第三步:查詢進行查看
select * from dept_p
注:
//查看序列當前值和下一個值的查看方式 select seq_on_dept.currval from dual; select seq_on_dept.nextval from dual;
MySQL
創建表的時候設置自增主鍵
create table user( id int(32) primary key auto_increment, username varchar(20) );
創建表后將字段設置為自增主鍵
alter table user add primary key (id);
DB2
CREATE TABLE
T_RUNNING_THREAD
(
ID INTEGER NOT NULL GENERATED ALWAYS AS IDENTITY (START WITH 1, INCREMENT BY 1 ),
NAME VARCHAR(150),
BEGINTIME VARCHAR(50),
ENDTIME VARCHAR(50),
DESC VARCHAR(4000),
SUCCESSFLAG CHARACTER(1),
PRIMARY KEY (ID)
)
————————————————
原文鏈接:https://blog.csdn.net/u013132035/article/details/80357234;
https://www.cnblogs.com/sharpest/p/7764662.html;
https://blog.csdn.net/qq_28140549/java/article/details/84983826