MySQL和Oracle中的自增長問題

2021-05-23 21:56:53 字數 1465 閱讀 9972

·mysql中的自增長問題比較簡單

mysql中有個auto_increment屬性,只需

create table tbname 

( a_id unsigned int primary key auto_increment not null, 

a_title varchar(32), 

a_content text

);注意:

1.把乙個null插入到乙個auto_increment資料列裡去,mysql將自動生成下乙個序列編號。編號從1開始,並1為基數遞增。把0插入auto_increment資料列的效果與插入null值一樣。但不建議這樣做。

2.如果插入的值與已有的編號重複,則會出現出錯資訊,因為auto_increment資料列的值必須是唯一的;情況二,如果插入的值大於已編號的值,則會把該插入到資料列中,並使在下乙個編號將從這個新值開始遞增。也就是說,可以跳過一些編號。

3.auto_increment是資料列的一種屬性,只適用於整數型別資料列。

設定auto_increment屬性的資料列應該是乙個正數序列,所以應該把該資料列宣告為unsigned,這樣序列的編號個可增加一倍。

4.auto_increment資料列必須有唯一索引,以避免序號重複。

5.auto_increment資料列必須具備not null屬性。

6.auto_increment資料列序號的最大值受該列的資料型別約束,如tinyint資料列的最大編號是127,如加上unsigned,則最大為255。一旦達到上限,auto_increment就會失效。

·oracle中比較複雜,需要用觸發器和序列來完成

1.首先建一張表:

create table table1 

(  cid number(8) not null primary key, 

name varchar2(20),

pw varchar(10),

*** varchar(4), 

); 2.建立乙個主鍵的序列範圍:

create sequence emp_sequence 

increment by 1 -- 每次加幾個 

start with 1 -- 從1開始計數 

nomaxvalue -- 不設定最大值 

nocycle -- 一直累加,不迴圈 

nocache -- 不建緩衝區

3.建立乙個觸發器:

create trigger user_id_trigger before

insert on table1 for each row

begin

select emp_sequence.nextval into :new.id from dual;

end;

注意:1.「:new」是乙個整體,不要寫錯了!!!

2.在程式中還可以直接用"emp_sequence.nextval"來代替主鍵值。

mysql主鍵自增和oracle中主鍵使用序列

在我們的開發工作中,我們經常需要進行資料的插入,那麼資料的插入如何保證每條資料有個唯一的標識呢?這個時候,我們就需要主鍵,主鍵是不可重複的。那麼,在mysql和oracle中,我們需要怎麼保證插入的資料不重複呢?在平常的需求開發中,我們經常會使用到mybatis框架。那麼,今天就結合mybatis框...

SQL server和MYSQL中的自增的一些對比

mysql auto increament sql server identity oracle 在oracle中沒有想sqlserver自動增長列,如果想要達到這個效果必須要自己建立索引 先介紹oracle中怎麼實現的 create sequence seq create table person...

php中mysql自增 MySQL的自增欄位

1.關鍵字 auto increment 2.自增用法 例 create table animals id mediumint not null auto increment,name char 30 not nu 1.關鍵字 auto increment 2.自增用法 例 create table...