Oracle中實現自增列

2021-05-22 20:32:50 字數 1249 閱讀 1300

oracle中新增自增列(觸犯器和序列實現)

create

orreplace

trigger

"觸發器名"

before

insert

on"his_mz_sfmx"

foreach

row

declare

last_sequence

number;

last_insertid

number;

begin if

(:new."id"

isnull

) then

--new

代表新行!如果是insert的話,就是剛或者將要insert的那一行!用:new.欄位名可以得到每一列的值

select

"序列名".nextval

into

:new."id"

from

dual;

else

select

last_number-

1into

last_sequence

from

user_sequences

where

upper(sequence_name) = upper(

'序列名

');

select

:new."id"

into

last_insertid

from

dual;

while

(last_insertid > last_sequence)

loop

select

"序列名".nextval

into

last_sequence

from

dual;

endloop;

endif;

end;

注釋:序列的宣告

-- create sequence

create

sequence

序列名

minvalue1

maxvalue

9999999999999999999999999999

start

with

500137

incrementby1

nocache

order

;

Oracle 實現自增列

sql server中實現自增列只需要將字段定義為identity 1,1 而在oracle中自增列需要使用乙個序列 sequence 和觸發器來實現。1.建立sequence,首先需要有create sequence或者create any sequence許可權 1 create sequenc...

oracle中資料庫自增列實現

oracle可以自定義序列,但是如果想實現多表序列管理,可以用乙個很簡單的表去圍護 邏輯很簡單,新建表如下 兩個字段,分別記錄專案表名和表中對應的最大序列號 然後在新增序列時圍護這個表,就實現了專案中表序列的圍護了。create table create table table seq table ...

oracle自增列的問題

建立表 create table test id number primary key,name varchar2 not null 建立序列 create sequence test seq start with 1 increment by 1 建立觸發器 create or replace t...