数据库触发器(建表-创建触发器)

xiaoxiao2021-02-28  88

if exists (select *from sysdatabases where name='TRI_school') drop database TRI_school create database TRI_school on primary ( name='TRI_schoolDB', filename='D:\触发器\TRI_school.mdf', size=10mb, maxsize=100mb, filegrowth=2mb ) use TRI_school if exists (select *from sysobjects where name='Student')--学生表 drop table Student create table Student( sno char(10)not null, sname varchar(20)not null, sage smallint, ssex char(1), sdept char(2), xf int default 0, jgxf int default 0, primary key(sno), check(ssex in ('M','F')) ) if exists (select *from sysobjects where name='Course')--课程表 drop table Course create table Course ( cno char(10)not null primary key,--定义主键 cname varchar(20)not null, cpon char(10), credit smallint, ); if exists (select *from sysobjects where name='SC')--选课表 drop table SC create table SC ( sno char(10)not null, cno char(10)not null, grade smallint , primary key(sno,cno), check(grade>=0 and grade<=100) ) create trigger sc_tri on sc for update,insert,delete as begin declare @ycno varchar(10),@ysno varchar(10) declare @xcno varchar(10),@xsno varchar(10) declare @yxf int ,@xxf int select @ycno=cno,@ysno=sno from deleted select @xcno=cno,@xsno=sno from inserted if @xsno is not null--如果现在的学号存在则去学生表中查找学分是多少 begin select @xxf=xf from student where sno=@xsno if @xxf is null--学生表中若没有学分则置0 update student set xf=0 where sno=@xsno end if @ysno is not null--//如果原来这个学生就在学生表里 begin select @yxf=credit from course where cno=@ycno--查找原学分 update student set xf=xf-@yxf where sno=@ysno--为什么要删除? end if @xsno is not null begin select @xxf=credit from course where cno=@xcno update student set xf=xf+@xxf where sno =@xsno end end --插入操作 insert into student (sno,sname,sage,ssex,sdept) values('95001','李勇',20,'M','CS'); insert into student (sno,sname,sage,ssex,sdept) values('95002','刘晨',19,'F','IS'); insert into student (sno,sname,sage,ssex,sdept) values('95003','王敏',18,'F','MA'); insert into student (sno,sname,sage,ssex,sdept) values('95004','张立',19,'M','IS'); insert into course(cno,cname,cpon,credit) values('2','数学',null,2) insert into course(cno,cname,cpon,credit) values('6','数据处理',null,2) insert into course(cno,cname,cpon,credit) values('7','PASCAL语言','6',4) insert into course(cno,cname,cpon,credit) values('4','操作系统','6',3) insert into course(cno,cname,cpon,credit) values('5','数据结构','7',4) insert into course(cno,cname,cpon,credit) values('1','数据库','5',4) insert into course(cno,cname,cpon,credit) values('3','信息系统','1',4) insert into sc values('95001','1',92); insert into sc values('95001','2',85); insert into sc values('95001','3',88); insert into sc values('95002','2',90); insert into sc values('95002','3',80); insert into sc values('95003','3',80); select *from student select *from course select *from sc

转载请注明原文地址: https://www.6miu.com/read-47948.html

最新回复(0)