下面讲在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