自增長序列 serial

2021-08-15 17:24:55 字數 921 閱讀 9348

serial

create table tuniq(

idserial, name text);

insert into tuniq (

name

) values(

'zero');

insert into tuniq (

name

) values(

'second'

);」**(表名_欄位名_seq)實現的,每次插入的時候會從這個seq中取值作為欄位的預設值,從而做到自增。

如果接著執行:

insert into tuni

q (id, name)

values(1

, 'second');

在id沒有唯一約束的情況下,這是可以執行成功的。原因是id欄位並沒有加任何約束,而serial只是簡單的從sequence給id賦值而已。這樣就並沒有達到唯一的效果.

這裡的serial,並不是乙個資料型別,而是通過建立乙個全域性序列**「tuniq_id_seq

如果在這個欄位上有唯一約束的話,那麼開始的時候匯入包括id在內的資料,之後執行不包括id的插入的時候,就會去從sequence取值。而這個時候,因為sequence的當前最新值尚未更新,所以可能會出現與已匯入資料衝突的情況.

create table tuniq(

idserial unique, name text);

insert into tuniq values(

0, 'zero');

insert into tuniq values(

1, 'first');

再執行下面的語句就會報錯.

insert into tuniq (

name

) values(

'second');

oracle自增長序列

例1 建立序列 create sequence abc increment by1 start with 1maxvalue 9999999999 nocycle nocache 語法詳解 create sequence 序列名 increment by n 1 start with n 2 3 4...

mysql 自增長序列

我們在什麼情況下可能使用序列呢 1.業務複雜,需要定製和控制主鍵時 自增主鍵只能按數字遞增的,但是序列可以隨心所欲的變化,比如我們按照年 月 日生成主鍵 2.希望手工維護自增長,方便資料遷移 3.當事務跨多表,期望事務可靠性時 4.需要業務上有意義的主鍵時,比如流水號 5.主鍵很明確地需要和其他表關...

oracle中建立自增長序列

首先建立序列 create sequence incr stu id seq minvalue 1 start with 1 increment by 1 nomaxvalue nocache 然後建立觸發器 create or replace trigger incr stu id trig be...