--dual表是用来管理各表主键而创建的。主要有三个字段。
--dual_id int dual表主键
--table_id varchar(100) 数据库中其他表的表明
--max_id varchar(10)数据库中其他表的主键
/*目的是想写一个函数可以获取需要查询的表的最大主键并自动+1 */create function getKey(@tableid varchar(10)) returns varchar(10) as
begin
declare @maxId varchar(10),@dualId int
if(exists(select max(d.MAX_ID) from dual d where d.table_id=@tableid))
begin
set @dualId = (select max(dual_id) from dual);
set @maxId='0000000001';
insert into dual (dual_id,table_id,max_id)values(@dualId,@tableid,@maxId)
end
else
begin
set @maxId = (select max(d.MAX_ID) from dual d where d.table_id=@tableid);
set @maxId = @maxId + 1;
update dual set MAX_ID = @maxId where table_id=@tableid
end
return(@maxId)
end;