Mysql自定義Sequence 實現序列自增功能

2021-10-23 12:06:33 字數 2311 閱讀 4722

create

table

`sequence`

(`name`

varchar(50

)collate utf8_bin not

null

comment

'序列的名字'

,`current_value`

int(11)

notnull

comment

'序列的當前值'

,`increment`

int(11)

notnull

default

'1'comment

'序列的自增值'

,primary

key(

`name`))

engine

=innodb

default

charset

=utf8 collate

=utf8_bin;

-- 建立–取當前值的函式

drop

function

ifexists currval;

delimiter $

create

function currval (seq_name varchar(50

))returns

integer

language

sqldeterministic

contains

sqlsql security definer

comment

''begin

declare

value

integer

;set

value=0

;select current_value into

value

from sequence

where name = seq_name;

return

value

;end

$delimiter

;-- 建立–取下乙個值的函式

drop

function

ifexists nextval;

delimiter $

create

function nextval (seq_name varchar(50

))returns

integer

language

sqldeterministic

contains

sqlsql security definer

comment

''begin

update sequence

set current_value = current_value + increment

where name = seq_name;

return currval(seq_name)

;end

$ delimiter

;-- 建立–更新當前值的函式

drop

function

ifexists setval;

delimiter $

create

function setval (seq_name varchar(50

),value

integer

)returns

integer

language

sqldeterministic

contains

sqlsql security definer

comment

''begin

update sequence

set current_value =

value

where name = seq_name;

return currval(seq_name)

;end

$ delimiter

;insert

into sequence values

('testseq',0

,1);

-- 新增乙個sequence名稱和初始值,以及自增幅度

select setval(

'testseq',10

);-- 設定指定sequence的初始值

select currval(

'testseq');

-- 查詢指定sequence的當前值

select nextval(

'testseq');

-- 查詢指定sequence的下乙個值

mysql自定義函式優點 MySQL自定義函式

在使用 mysql 的過程中,mysql 自帶的函式可能完成不了我們的業務需求,這時候就需要自定義函式。自定義函式是一種與儲存過程十分相似的過程式資料庫物件。它與儲存過程一樣,都是由 sql 語句和過程式語句組成的 片段,並且可以被應用程式和其他 sql 語句呼叫。自定義函式與儲存過程之間存在幾點區...

mysql自定義函式命名 MySQL自定義函式

在使用 mysql 的過程中,mysql 自帶的函式可能完成不了我們的業務需求,這時候就需要自定義函式。自定義函式是一種與儲存過程十分相似的過程式資料庫物件。它與儲存過程一樣,都是由 sql 語句和過程式語句組成的 片段,並且可以被應用程式和其他 sql 語句呼叫。自定義函式與儲存過程之間存在幾點區...

mysql 自定義函式

今天要做乙個排序,有中文和英文的,資料庫採用utf8編碼,排除來的不對,所以需要將中文轉換成中文的第乙個字母,然後來排序 先小小的看一下mysql的自定義函式 drop function if exists fntable 如果存在就刪除 delimiter 函式開始 create function...