資料庫 表中主鍵字串通過函式取值

2021-08-11 11:58:21 字數 1504 閱讀 2360

如果專案中有特殊要求,表的主鍵id用varchar型別,那麼自增方式只能通過函式來解決。思路就是在函式中定義開始值和最大值,如果通過引數在某錶中查無資料就賦值1,有資料就加一,另給該id做了類似加密

首先需要定義表來存放引數 ,記錄當前資料 tbl_base_seq

其次定義函式fun_create_id

begin

declare cres_id varchar(32);#返回值

declare res_id int(32) unsigned;#遞增值

declare prefix varchar(30);

declare vextract varchar(30);

declare temp_start int(32) unsigned;#初始值

declare temp_end int(32) unsigned;#最大值

declare len int(3) unsigned;#最大值長度

#查詢當前屬性,in_seq_name是引數

select max(s.seq_current),max(s.seq_prefix),max(seq_extract),max(seq_start),max(seq_end) into res_id,prefix,vextract,temp_start,temp_end

from tbl_base_seq s

where s.seq_name = in_seq_name;

# 查詢引數不在表則把該引數插入表

if res_id is null or res_id = '' then

insert into tbl_base_seq(seq_name,seq_current,seq_start) values(in_seq_name,1,1);

set res_id = 1;

end if;

if temp_end is null or temp_end = '' then

set temp_end = 99999999;

end if;

if prefix is null or prefix ='' then

set prefix = 'yymmddhh24miss';

end if;

set len = length(temp_end);

#有最大值

if res_id

注:

concat(str1,str2....)是字串拼接
date_format(now(),'%y%m%d%h%i%s')是已某格式顯示日期
lpad(str,len,str2)是在str左邊填充str2直到長度為len
在sql視窗我們可以通過傳任意表id來取值

開始是空表

例如:select fun_create_id('userid')

SQLserver資料庫 表中主鍵約束

下面就讓我們分別 這五類約束設定新增以及刪除等用法吧!1 主鍵約束 建立表時設定約束的方式有兩種 一種是在列級設定,另一種是在表級設定。在建立表時設定主鍵約束create table table name column name datatype constraint constraint name...

資料庫字串函式

chat length s 返回字串s的字元數 concat s1,s2,將字串s1,s2等多個字串合併為乙個字串 cincat ws x,s1,s2,同concat s1,s2,函式,但是每個字串之間要加上x insert s1,x,len,s2 強字串s2替換s1的x位置開始長度為len的字串 ...

PostgreSQL資料庫中獲取表主鍵名稱

一 如下表示,要獲取teacher表的主鍵資訊 select pg constraint.conname as pk name,pg attribute.attname as colname,pg type.typname as typename from pg constraint inner j...