数据库应用-Sqlserver触发器

下面讲在SQL SEVER2000/SYBASE数据为里设置触发器的脚本实例

SQL SEVER2000和SYBASE的存储语句是相同的

题目要求:表1和表2的主键都是xjh(学籍号),当表1添加,删除,或者修改数据时,表2自动更新,请用触发器实现它们?

答案:建议在数据库管理中心直接运行DDL的SQL语句,从而达到创建触发器的目的

//建议在表1建议3个触发器,
/*Table1:代表1,Table2:代表2*/
Table1-insert_tg=插入触发器
Table1-del_tg =删除触发器
Table1-update_tg=更新触发器


/*Table1-insert_tg插入触发器*/
create trigger dbo.Table1-insert_tg on Table1
for INSERT as
    declare @xjh_s varchar(8)
begin
   select @xjh_s=(select xjh from inserted)/*取得新插入的xjh*/
   /*检查在Table2不存在此数据,则插入*/ 
   if not exists(select *  from Table2,inserted where Table2.xjh=inserted.xjh)  
   begin
 insert into Table2 values(@xjh_s)
   end 
end   


/*Table1-del_tg删除触发器*/
create trigger dbo.Table1-del_tg on Table1
for DELETE as
    declare @xjh_s varchar(8)
begin
     select @xjh_s =(select xjh from deleted )
     delete from 代表2,deleted   where (代表2.xjh=deleted.xjh)
end


/*表1的非主键XM被修改,则自动更新到表2对应的XM*/
/*以更新XM姓名为例子*/
Table1-update_tg=更新触发器
create trigger dbo.Table1-update_tg on Table1
for UPDATE as
      declare @xjh_s varchar(8)
      declare @xm_s varchar(20)
begin
      select @xjh_s=(select xjh from inserted)/*取得新插入的XJH*/
      select @xm_s=(select xm from inserted)/*取得新修改的xm*/
 if update(xm)
   begin
   /*检查在Table2存在此数据,则更新相关数据*/ 
   if exists(select *  from Table2,inserted where Table2.xjh=inserted.xjh)  
   begin
 update Table2 set xm=@xm_s where Table2.xjh=inserted.xjh
   end 
  end
end  

 

你可能感兴趣的:(sql,数据库,table,Sybase,delete,insert)