如果專案中有特殊要求,表的主鍵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...