SQL触发器的一次实验 - 无幻の编程 - 对于一个初学者来说,野心也是必须的...
SQL触发器的一次实验
【实验内容】
① 在Student表中编写insert,update的触发器,如果每个班的学生不能超过30个,如果低于此数,添加可以完成;如果超过此数,则插入、修改将不能实现。
② 在CS表上编写update触发器,当修改SC表中的grade字段时将其修改前后的信息保存在SC_log表中
【实验步骤】
第一题
CREATE TRIGGER Set_Sal3
ON S
FOR INSERT,UPDATE
AS
IF EXISTS(SELECT * FROM S GROUP BY CLS HAVING COUNT(SNO)>6 )
BEGIN
PRINT '学生人数已经超过个'
ROLLBACK
END
DROP TRIGGER Set_Sal2
USE Student
INSERT
INTO S
VALUES ('09091111','晓宏','20','男','1')
USE Student
INSERT
INTO S
VALUES ('06061111','晓洪','20','男','1')
USE Student
UPDATE S
SET CLS='1'
WHERE SNO='07081239'
学生人数已经超过6个
第二题
CREATE TABLE SC_log
(SNO CHAR(8),
CNO CHAR(6),
OLD_GRADE SMALLINT,
NEW_GRADE SMALLINT,
)
CREATE TRIGGER Upd_sal
ON SC
FOR UPDATE
AS
IF UPDATE (GRADE)
BEGIN
INSERT INTO SC_log (SNO,CNO,OLD_GRADE,NEW_GRADE)
SELECT DELETED.SNO,DELETED.CNO,DELETED.GRADE,INSERTED.GRADE
FROM INSERTED,DELETED
WHERE INSERTED.SNO=DELETED.SNO
END
--DROP TRIGGER Upd_sal
UPDATE SC
SET GRADE='99'
WHERE SNO='07081111' AND CNO='2'
(1 行受影响)
(1 行受影响)
相关的资料,还有实验视频,可以在我的CSDN资源下载 http://download.csdn.net/akof1314
学生人数已经超过6个