各數據庫如何實現自增


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


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM