触发器事例

    技术2022-05-19  23

    ---创建联系人表由work,education,language 触发集合数据create table demo(   [id] int primary key identity(1,1)  ,cvid int default(0)  ---候选人id  ,truename nvarchar(50) --真实姓名  ,gender varchar(50) --性别  ,birth datetime ---出生日期  ,worktime varchar(50)--工作年限  ,comfrom varchar(50) --来源  ,joblevel varchar(100) --现职位级别  ,address nvarchar(200)---现居住地  ,jobtrade varchar(50) ---现在工作行业  ,jobcategory varchar(100)--现在工作职位  ,jobaddress varchar(100)---期望工作地点  ,jobqwtrade varchar(100) --期望工作行业  ,jobqwcategory varchar(150) --期望工作职位  ,job_qwtype varchar(50) --工作性质  ,tel1  varchar(50)   --电话号码  ,tel2  varchar(50)   ,tel3  varchar(50)     ,intime datetime      --发布时间  ,specialty varchar(1000) ---专业  ---->education  ,degree varchar(1000) --学历 ----->education  ,company varchar(1000) --公司   ---->work  ,language varchar(1000) ---语言---->language)select * from demo----职位合并xm ,cvsession create table janc(  [id] int primary key identity(1,1) ,cvid int default(0)   ---侯选人id ,xmid int default(0)---职位id ,jobname nvarchar(100)  ---职位名称 ,cvsession nvarchar(50)---职位申请状态 ,cvsession1 nvarchar(50) ---星级 ,type int default(1) --活动/拒绝)drop table janc---work 触发器ALTER  trigger triworkon workafter insert ,update ,delete as   declare @cp varchar(100)  declare @cp1 varchar(100)  declare @cvid int  begin if Exists(Select 1 From deleted) AND NOT Exists(Select 1 From inserted) begin    -- 触发删除    select @cp=company ,@cvid=cvid from deleted

           if exists(select cvid from demo where cvid=@cvid)   begin       update demo set company=replace(isnull(company,''),','+@cp,'') where cvid=@cvid      end end else IF NOT Exists(Select 1 From deleted) AND Exists(Select 1 From inserted) begin       -- 触发插入    select @cp=company ,@cvid=cvid from inserted         if exists(select cvid from demo where cvid=@cvid)   begin                update demo set company=isnull(company,'')+','+@cp where cvid=@cvid 

        end end else IF Exists(Select 1 From deleted) AND Exists(Select 1 From inserted) begin  -- 触发更新        select @cp=company ,@cvid=cvid from inserted   select @cp1=company from deleted        if exists(select cvid from demo where cvid=@cvid)   begin       update demo set company=replace(isnull(company,''),','+@cp1,','+@cp) where cvid=@cvid      end end  end ---test----delete trigger triworkinsert work values(getdate(),getdate(),'似的看见防空洞','s','ss','sss','sss','sss','aaa',getdate(),123925)select * from demodelete from work  where cvid=123925select * from work where company like '%似的看见防空洞%' update work set company='aaaaa' where id=3418  ----test--------education 触发器create  trigger trieducationon educationafter insert ,update ,delete as   declare @deg varchar(100)  declare @deg1 varchar(100)  declare @sp varchar(50)  declare @sp1 varchar(50)  declare @cvid int  begin if Exists(Select 1 From deleted) AND NOT Exists(Select 1 From inserted) begin    -- 触发删除    select @sp=specialty ,@deg=degree,@cvid=cvid from deleted

           if exists(select cvid from demo where cvid=@cvid)   begin       update demo set specialty=replace(isnull(specialty,''),','+@sp,''),degree=replace(isnull(degree,''),','+@deg,'') where cvid=@cvid      end end else IF NOT Exists(Select 1 From deleted) AND Exists(Select 1 From inserted) begin       -- 触发插入    select @sp=specialty ,@deg=degree,@cvid=cvid from inserted         if exists(select cvid from demo where cvid=@cvid)   begin                update demo set specialty=isnull(specialty,'')+','+@sp ,degree=isnull(degree,'')+','+@deg where cvid=@cvid 

        end end else IF Exists(Select 1 From deleted) AND Exists(Select 1 From inserted) begin  -- 触发更新        select @sp=specialty ,@deg=degree ,@cvid=cvid from inserted   select @sp1=specialty ,@deg1=degree from deleted        if exists(select cvid from demo where cvid=@cvid)   begin       update demo set specialty=replace(isnull(specialty,''),','+@sp1,','+@sp),degree=replace(isnull(degree,''),','+@deg1,','+@deg) where cvid=@cvid      end end  end ---test-----insert into education values(getdate(),getdate(),'aaaa','ffffff','博士','','',getdate(),123925)select * from education cvid=123925select * from demodelete from education where id=37update education  set specialty='dddddd' where id=36-----test----------

    ---language 触发器alter  trigger trilanguageon languageafter insert ,update ,delete as   declare @deg varchar(100)  declare @deg1 varchar(100)  declare @sp varchar(50)  declare @sp1 varchar(50)  declare @cvid int  begin if Exists(Select 1 From deleted) AND NOT Exists(Select 1 From inserted) begin    -- 触发删除    select @sp=kind ,@deg=[level],@cvid=cvid from deleted

           if exists(select cvid from demo where cvid=@cvid)   begin       update demo set language=replace(isnull(language,''),','+@sp+'|'+@deg,'') where cvid=@cvid                    end end else IF NOT Exists(Select 1 From deleted) AND Exists(Select 1 From inserted) begin       -- 触发插入    select @sp=kind ,@deg=[level],@cvid=cvid from inserted         if exists(select cvid from demo where cvid=@cvid)   begin                update demo set language=isnull(language,'')+','+@sp +'|'+@deg where cvid=@cvid 

        end end else IF Exists(Select 1 From deleted) AND Exists(Select 1 From inserted) begin  -- 触发更新        select @sp=kind ,@deg=[level] ,@cvid=cvid from inserted   select @sp1=kind ,@deg1=[level] from deleted        if exists(select cvid from demo where cvid=@cvid)   begin       update demo set language=replace(isnull(language,''),','+@sp1+'|'+@deg1,','+@sp+'|'+@deg) where cvid=@cvid      end end  end ----test---insert into language values('法语','一般','','',getdate(),123925)select * from language cvid=123925select * from demoupdate demo set language='' where cvid=123925delete from language where id=58update language  set kind='法语',[level]='好' where id=56----test------select * from cvsession---cvsession 触发器alter  trigger tricvsessionon cvsessionafter insert ,update ,delete as   declare @cvid int  declare @xmid int  declare @id int  declare @jobname varchar(100)  declare @cvsession varchar(50)  declare @cvsession1 varchar(50)  declare @type intbegin if Exists(Select 1 From deleted) AND NOT Exists(Select 1 From inserted) begin    -- 触发删除    select @xmid=xmid,@cvid=cvid  from deleted

        delete from janc where cvid=@cvid and xmid=@xmid

     end else IF NOT Exists(Select 1 From deleted) AND Exists(Select 1 From inserted) begin       -- 触发插入    select @xmid=xmid,@cvsession=cvsession,@cvsession1=cvsession1,@type=type,@cvid=cvid from inserted    select @jobname=jobname from xm where [id]=@xmid    insert into janc values(@cvid,@xmid,@jobname,@cvsession ,@cvsession1,@type)    end else IF Exists(Select 1 From deleted) AND Exists(Select 1 From inserted) begin  -- 触发更新   select @id=[id],@xmid=xmid,@cvsession=cvsession,@cvsession1=cvsession1,@type=type,@cvid=cvid from inserted   update janc set cvid=@cvid, xmid=@xmid,cvsession=@cvsession,cvsession1=@cvsession1,type=@type where  cvid=@cvid and xmid=@xmid      endend ----test------------select * from cvsessionselect top 1 * from xmselect * from demoinsert into cvsession values(123925,20,20,22,'sssss','db',234,getdate(),'ss',getdate(),0,0)select * from jancdelete from  cvsession where id=173152update cvsession set cvsession='aaaaa' where  id=173152------test-------------cvresume 触发器create  trigger tricvresumeon cvresumeafter insert ,update ,delete as   declare @id int   declare @cvid int   declare @truename nvarchar(50) --真实姓名  declare @gender varchar(50) --性别  declare @birth datetime ---出生日期  declare @worktime varchar(50)--工作年限  declare @comfrom varchar(50) --来源  declare @joblevel varchar(100) --现职位级别  declare @address nvarchar(200)---现居住地  declare @jobtrade varchar(50) ---现在工作行业  declare @jobcategory varchar(100)--现在工作职位  declare @jobaddress varchar(100)---期望工作地点  declare @jobqwtrade varchar(100) --期望工作行业  declare @jobqwcategory varchar(150) --期望工作职位  declare @job_qwtype varchar(50) --工作性质  declare @tel1  varchar(50)   --电话号码  declare @tel2  varchar(50)   declare @tel3  varchar(50)     declare @intime datetime begin if Exists(Select 1 From deleted) AND NOT Exists(Select 1 From inserted) begin    -- 触发删除    select @cvid=id  from deleted    delete from demo where cvid=@cvid

     end else IF NOT Exists(Select 1 From deleted) AND Exists(Select 1 From inserted) begin       -- 触发插入    select @cvid=id,@truename=truename,@gender=gender,@birth=birth,@worktime=worktime,@comfrom=comfrom,@joblevel=joblevel,@address=address, @jobtrade=jobtrade,@jobcategory=jobcategory,@jobaddress=jobaddress,@jobqwtrade=jobqwtrade,@jobqwcategory=jobqwcategory,@job_qwtype=job_qwtype,@tel1=tel1,@tel2=tel2,@tel3=tel3,@intime=intime    from inserted    insert into demo (cvid,truename,gender,birth,worktime,comfrom,joblevel,address,jobtrade,jobcategory,jobaddress,jobqwtrade,jobqwcategory,job_qwtype,tel1,tel2,tel3,intime)    values(@cvid,@truename,@gender,@birth,@worktime,@comfrom,@joblevel,@address,@jobtrade,@jobcategory,@jobaddress,@jobqwtrade,@jobqwcategory,@job_qwtype,@tel1,@tel2,@tel3,@intime)    end else IF Exists(Select 1 From deleted) AND Exists(Select 1 From inserted) begin  -- 触发更新   select @cvid=id,@truename=truename,@gender=gender,@birth=birth,@worktime=worktime,@comfrom=comfrom,@joblevel=joblevel,@address=address, @jobtrade=jobtrade,@jobcategory=jobcategory,@jobaddress=jobaddress,@jobqwtrade=jobqwtrade,@jobqwcategory=jobqwcategory,@job_qwtype=job_qwtype,@tel1=tel1,@tel2=tel2,@tel3=tel3,@intime=intime    from inserted   update demo set truename=@truename,gender=@gender,birth=@birth,worktime=@worktime,comfrom=@comfrom,joblevel=@joblevel,address=@address, jobtrade=@jobtrade,jobcategory=@jobcategory,jobaddress=@jobaddress,jobqwtrade=@jobqwtrade,jobqwcategory=@jobqwcategory,job_qwtype=@job_qwtype,tel1=@tel1,tel2=@tel2,tel3=@tel3,intime=@intime    where  cvid=@cvid      endend ----test-------delete  from cvresume where id=123925select * from demo----test----------xm 触发器create  trigger trixmon xmafter update  as   declare @xmid int   declare @jobname nvarchar(50) --职位名称 begin  -- 触发更新   select @xmid=id,@jobname=jobname from inserted   update janc set jobname=@jobname where  xmid=@xmid     end


    最新回复(0)