SQL触发器的一次实验 - 无幻の编程 - 对于一个初学者来说,野心也是必须的...

SQL触发器的一次实验

无幻 posted @ 2009年5月15日 16:52 in SQL数据库 with tags SQL 触发器 实验 , 1622 阅读

【实验内容】

    Student表中编写insertupdate的触发器,如果每个班的学生不能超过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

 

  • 无匹配

登录 *


loading captcha image...
(输入验证码)
or Ctrl+Enter
Host by is-Programmer.com | Power by Chito 1.3.3 beta | © 2007 LinuxGem | Design by Matthew "Agent Spork" McGee