程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 數據庫知識 >> SqlServer數據庫 >> 關於SqlServer >> 主鍵自動增長在Mysql,SqlServer,Oracle中的設置

主鍵自動增長在Mysql,SqlServer,Oracle中的設置

編輯:關於SqlServer
 

1、把主鍵定義為自動增長標識符類型

在mysql中,如果把表的主鍵設為auto_increment類型,數據庫就會自動為主鍵賦值。例如:

create table customers(id int auto_increment primary key not null, name varchar(15));

insert into customers(name) values("name1"),("name2");

select id from customers;

以上sql語句先創建了customers表,然後插入兩條記錄,在插入時僅僅設定了name字段的值。最後查詢表中id字段,查詢結果為:

id

1

2

由此可見,一旦把id設為auto_increment類型,mysql數據庫會自動按遞增的方式為主鍵賦值。

在MS SQLServer中,如果把表的主鍵設為identity類型,數據庫就會自動為主鍵賦值。例如:

create table customers(id int identity(1,1) primary key not null, name varchar(15));

insert into customers(name) values("name1"),("name2");

select id from customers;

查詢結果和mysql的一樣。由此可見,一旦把id設為identity類型,MS SQLServer數據庫會自動按遞增的方式為主鍵賦值。identity包含兩個參數,第一個參數表示起始值,第二個參數表示增量。

2、從序列中獲取自動增長的標識符

在Oracle中,可以為每張表的主鍵創建一個單獨的序列,然後從這個序列中獲取自動增加的標識符,把它賦值給主鍵。例如一下語句創建了一個名為customer_id_seq的序列,這個序列的起始值為1,增量為2。

create sequence customer_id_seq increment by 2 start with 1

一旦定義了customer_id_seq序列,就可以訪問序列的curval和nextval屬性。

curval:返回序列的當前值

nextval:先增加序列的值,然後返回序列值

以下sql語句先創建了customers表,然後插入兩條記錄,在插入時設定了id和name字段的值,其中id字段的值來自於customer_id_seq序列。最後查詢customers表中的id字段。

create table customers(id int primary key not null, name varchar(15));

insert into customers values(customer_id_seq.curval, "name1"),(customer_id_seq.nextval, "name2");

select id from customers;

如果在oracle中執行以上語句,查詢結果為:

id

1

3

 
  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved