Oracle的varchar2型別實現主鍵自增

2021-10-02 03:52:23 字數 1292 閱讀 4455

create table project_manage(

productionid varchar2(20) not null,

name varchar2(20) not null,

remarks varchar2(50));

create sequence auto_add

start with 10000

increment by 10

nomaxvalue

nocache

create or replace trigger myproject

before insert on project_manage

for each row

begin

if (to_char(:new.productionid) is null) then

select auto_add.nextval into :new.productionid from dual;

end if;

end;

sql> insert into project_manage(name,remarks)

2 values(『三峽工程』,『已經竣工』);

1 row inserted

sql> insert into project_manage(name,remarks)

2 values(『貴成鐵路』,『馬上動工』);

1 row inserted

sql> insert into project_manage(name,remarks)

2 values(『昆明新建機場』,『在建中…』);

1 row inserted

新增資料時,沒有報錯,說明productionid成功新增了序列值,

因為我們定義表時約束了not null;

sql> select * from project_manage;

productionid name remarks

10000 三峽工程 已經竣工

10010 貴成鐵路 馬上動工

10020 昆明新建機場 在建中…

如我們所**,sequence的number型別的資料別轉換為了varchar2型別,

因為productionid這一列是左對齊的,如果樹資料型別的話它將右對齊;

sql> select 10010,to_char(『10010』) from dual;

10010 to_char('10010')
10010 10010

varchar和varchar2的區別

varchar是標準sql裡面的。varchar2是oracle提供的獨有的資料型別。varchar對於漢字佔兩個位元組,對於英文是乙個位元組,佔的記憶體小,varchar2都是佔兩個位元組。varchar對空串不處理,varchar2將空串當做null來處理。varchar存放固定長度的字串,最大...

varchar和varchar2的區別

varchar是標準sql裡面的。varchar2是oracle提供的獨有的資料型別。varchar對於漢字佔兩個位元組,對於數字,英文本元是乙個位元組,佔的記憶體小,varchar2一般情況下把所有字元都佔兩位元組處理。具體要看資料庫使用的字符集,比如gbk,漢字就會佔兩個位元組,英文1個,如果是...

varchar和varchar2的區別

varchar是標準sql裡面的 varchar2是oracle提供的獨有的資料型別。varchar對於漢字佔兩個位元組,對於數字,英文本元是乙個位元組,佔的記憶體小 varchar2一般情況下把所有字元都佔兩位元組處理。具體要看資料庫使用的字符集,比如gbk,漢字就會佔兩個位元組,英文1個,如果是...