SQL2000触发器简单问题?

来源:百度知道 编辑:UC知道 时间:2024/09/27 23:25:57
创建一个触发器,当向JY表出入一条记录时,检查该记录的“借书证号”是否在students表中存在,检查“书号”是否在book表中存在,如果有其中一条不存在,则拒绝插入。3张表的关系模型是
book(书号#,书名,作者,出版社)
student(借书证号#,姓名,性别,班级)
jy(借书证号#,书号#,借书时间)

触发器实现方式:
create trigger tr_jy
on jy instead of insert
as
begin
declare @借书证号# varchar(50),@书号# varchar(50)
select @借书证号#=借书证号#,@书号#=书号# from inserted
if not exists (select * from book where 书号#=@书号#) or not exists (select * from student where 借书证号#=@借书证号#)
raiserror ('不能插入',16,1)
end
其实最好的办法是用外键约束来实现:
alter table jy add constraint fk_book foreign key(书号#) references book(书号#)
alter table jy add constraint fk_student foreign key(借书证号#) references student(借书证号#)

以上,希望对你有所帮助!

触发器很麻烦,建议使用外键约束来达到要求。
语法:
alter table 需要建立外键的表 add constraint 外键名字 foreign key(字段) references 外键表(外键字段);

在你的问题里面:
alter table JY add constraint JY_fk1 foreign key(借书证号#) references students(借书证号#);

alter table JY add constraint JY_fk2 foreign key(书号#) references book(书号#);

这样之后,系统就会自动验证你的要求,不满足你的要求的时候数据是没有办法被插入的。

---
以上,希望对你有所帮助。

不懂,来学学