当前位置:   article > 正文

sql下员工工牌(YC0001)的简单实现_工牌绑定数据库实现

工牌绑定数据库实现

sql下员工工牌(YC0001)的简单实现
方法一:
use master;
go

--判断数据库Test是否存在
if exists(select * from sys.databases where name='Test')
drop database Test;  --存在则删除
go

--创建Test数据库
create database Test;
go

--使用Test数据库
use Test;
go

--判断数据库Test是否存在emp表
if exists(select * from sys.tables where name='emp')
drop table emp;  --存在则删除
go

--创建emp表
create table emp(
eid int primary key identity(10001,1),
ecd varchar(20) null,  -- 要求是YC0001  YC0002且有系统根据eid自动生成
);
go

--判断当前实例是否存在触发器tri_ecd
if exists(select * from sys.triggers where name='tri_ecd')
drop trigger tri_ecd;
go

--创建触发器用来实现工牌号的根据eid自动生成
create trigger tri_ecd  -- 创建触发器tri_ecd
on emp   --在emp表中
after insert  -- 插入操作后触发此触发器,执行下面的操作
as
declare @eid int;  --声明一个变量eid,用来存放最新插入的数据的eid
declare @ecd varchar(14); --声明一个变量ecd,用来存放截取的eid
set @eid=(select max(eid) from emp);  --从emp表中查询出最新插入的数据的eid
set @ecd=substring(cast(@eid as varchar),2,len(@eid)); --讲整型的eid转为字符型,然后截取除掉前面的1
update emp set ecd='YC'+@ecd where eid=@eid; -- 更新emp表中的ecd列
go

insert into emp values('');
insert into emp values('');
insert into emp values('');

select * from emp;
效果:
eid              ecd
10001     YC0001
10002     YC0002 
10003     YC0003

方法二:

create table dept(
did varchar(20) primary key,
dname varchar(20)
);
go

drop trigger tri_did;
go
create trigger tri_did
on dept
after insert
as
declare @did varchar(20);
set @did=(select top 1 did from dept where did!='1' order by did desc);
if((select count(*) from dept)<=1)
begin
update dept set did='YC10001';
end
else
begin
declare @temp varchar(20);
declare @num int;
set @temp=substring(@did,3,len(@did));
set @num=(cast(@temp as int)+1);
update dept set did=('YC'+cast(@num as varchar)) where did='1';
end
go

insert into dept values('1','a');  --注意:did列初始值必须是1
insert into dept values('1','b');
insert into dept values('1','c');  
效果:
    did               dname
YC10001               a
YC10002               b
YC10003               c 
         
本文内容由网友自发贡献,转载请注明出处:https://www.wpsshop.cn/w/一键难忘520/article/detail/888230
推荐阅读
相关标签
  

闽ICP备14008679号