有这样一个需求(关于人员维护)
在维护人员(如增加,删除,更新资料)前先把人员信息提出来
在我需要更新资料,或删除时,语句应怎么写(现在我用的是触发器) SQL code--供应商客户维护存储过程
create proc [dbo].[gysk_wh]
@gzid varchar(20),--可不管
@djlxbs varchar(3) --可不管
asif not exists(select * from gyskh_wh where sslx=@sslx) ---判断是否是初次维护
begin
insert into gyskh_wh(cw_bh,cw_mc,sslx)--CW_BH即编号,为主健,CW_MC人员名称,
select cw_bh,cw_mc,sslx
from tmp_dj_GKW555(nolock) where gzid=@gzid --tmp_dj_GKW555在应用程序中单据的临时表,如增一条人员信息,自动往临时表插入一条
end
else
begin
begin --drop table #bb
select cw_bh,cw_mc,sslx,username,lastmodifytime into #bb
from tmp_dj_GKW555 a(nolock)
where not exists(select * from gyskh_wh(nolock) where SSLX=A.SSLX AND CW_BH=A.CW_BH)
insert into gyskh_wh(cw_bh,cw_mc,sslx,username,lastmodifytime)
select cw_bh,cw_mc,sslx,username,lastmodifytime from #bb
end
end
--考虑到更新名称(以下这段不太好,你什么办法)
update a set a.cw_mc=b.cw_mc
from gyskh_wh a(nolock),tmp_dj_GKW555 b(nolock)
where a.sslx=b.sslx and a.cw_bh=b.cw_bh and b.gzid=@gzidgo
在维护人员(如增加,删除,更新资料)前先把人员信息提出来
在我需要更新资料,或删除时,语句应怎么写(现在我用的是触发器) SQL code--供应商客户维护存储过程
create proc [dbo].[gysk_wh]
@gzid varchar(20),--可不管
@djlxbs varchar(3) --可不管
asif not exists(select * from gyskh_wh where sslx=@sslx) ---判断是否是初次维护
begin
insert into gyskh_wh(cw_bh,cw_mc,sslx)--CW_BH即编号,为主健,CW_MC人员名称,
select cw_bh,cw_mc,sslx
from tmp_dj_GKW555(nolock) where gzid=@gzid --tmp_dj_GKW555在应用程序中单据的临时表,如增一条人员信息,自动往临时表插入一条
end
else
begin
begin --drop table #bb
select cw_bh,cw_mc,sslx,username,lastmodifytime into #bb
from tmp_dj_GKW555 a(nolock)
where not exists(select * from gyskh_wh(nolock) where SSLX=A.SSLX AND CW_BH=A.CW_BH)
insert into gyskh_wh(cw_bh,cw_mc,sslx,username,lastmodifytime)
select cw_bh,cw_mc,sslx,username,lastmodifytime from #bb
end
end
--考虑到更新名称(以下这段不太好,你什么办法)
update a set a.cw_mc=b.cw_mc
from gyskh_wh a(nolock),tmp_dj_GKW555 b(nolock)
where a.sslx=b.sslx and a.cw_bh=b.cw_bh and b.gzid=@gzidgo
楼主的意思是开单时把所有的数据插入到临时表里面,在应用程序在删除一条记录时,从对应的原始表中删除对应的记录
楼主现在用触发器来完成,想改成在存储过程中用一条SQL语句完成,
不知楼主是否是这个意思
@gzid varchar(20),--可不管
@djlxbs varchar(3) --可不管
as if not exists(select * from gyskh_wh where sslx=@sslx) ---判断是否是初次维护
begin
insert into gyskh_wh(cw_bh,cw_mc,sslx)--CW_BH即编号,为主健,CW_MC人员名称,
select cw_bh,cw_mc,sslx
from tmp_dj_GKW555(nolock) where gzid=@gzid --tmp_dj_GKW555在应用程序中单据的临时表,如增一条人员信息,自动往临时表插入一条
end
else
begin
begin --drop table #bb
select cw_bh,cw_mc,sslx,username,lastmodifytime into #bb
from tmp_dj_GKW555 a(nolock)
where not exists(select * from gyskh_wh(nolock) where SSLX=A.SSLX AND CW_BH=A.CW_BH)
insert into gyskh_wh(cw_bh,cw_mc,sslx,username,lastmodifytime)
select cw_bh,cw_mc,sslx,username,lastmodifytime from #bb
end
end
--考虑到更新名称(以下这段不太好,你什么办法)
update a set a.cw_mc=b.cw_mc
from gyskh_wh a(nolock),tmp_dj_GKW555 b(nolock)
where a.sslx=b.sslx and a.cw_bh=b.cw_bh and b.gzid=@gzidgo
没什么优化的..