建立选课系统数据库时,需要用SQL Server 2005创建触发器,来约束一些操作,希望得到SQL语句来创建

选课表中有 课程号(Cno),先行课程号(Cpno),要求选课时先选先行课程,为了约束这个条件,要求创建触发器,触发动作是在选课表中插入选课课程(Cno),触发动作体是检查是否选修了先行课程(Cpno),如果没有,拒绝插入(或者删除插入的元组)

我也觉得,这个不要用触发器,在程序中判断
当要插入选课时,先查询是否选修先行课程,若有即插入数据,没有即提示
如果用触发器的话,先要插入数据,然后触发操作查询,无效的话还有回滚数据
操作步骤较多,浪费系统资源

不过如果一定要用触发器的话,把1L的if条件改成
if exists(
select * from stu_cno a inner join inserted b on a.sno=b.sno inner join 选课表 c on c.cno=b.cno
where a.cno=c.cpno
)
温馨提示:答案为网友推荐,仅供参考
第1个回答  2013-02-22
create trigger inserttrigger
on tb
after insert
as
if exist (select cpno from inserted where cpno is null)
begin
rollback tran
end
第2个回答  2013-02-22
这个不一定非要在数据库里面写的,在程序里面写可以的!!!
相似回答