的状态。)
? 插入数据行('s5','c1','101'),是否弹出如图所示的错误。请问该行数据是否插入到sc表中
? 将s5的c1成绩更新至101,能否更新成功?
USE jxsk
IF EXISTS (SELECT NAME FROM SYSOBJECTS WHERE NAME='SCORE_SC_TRI' AND TYPE='TR')
DROP TRIGGER SCORE_SC_TRI GO
CREATE TRIGGER SCORE_SC_TRI ON SC FOR INSERT, UPDATE AS
DECLARE @SCORE_IN TINYINT
SELECT @SCORE_IN=SCORE FROM INSERTED IF @SCORE_IN<0 OR @SCORE_IN>100 BEGIN
PRINT '成绩超出0-100!请重新输入.' ROLLBACK TRANSACTION END GO
INSERT INTO SC VALUES ('s5','c1','101') /*触发器激活,插入失败*/
UPDATE SC SET SCORE=101 WHERE SNO='s5' AND CNO='c1' 激活,更新失败*/
/*触发器
② 为数据库表T创建一触发器:当职称从“讲师”晋升为“副教授”时,津贴自动增加500元,从“副教授”晋升为“教授”时,岗位津贴自动增加900元。
更新前:
更新后:
USE jxsk
IF EXISTS (SELECT NAME FROM SYSOBJECTS WHERE NAME='UT' AND TYPE='TR')
DROP TRIGGER UT GO
CREATE TRIGGER UT ON T FOR UPDATE AS
DECLARE @PROF_OLD CHAR(10) DECLARE @PROF_NEW CHAR(10) DECLARE @TNO CHAR(2)
SELECT @PROF_OLD=PROF FROM DELETED SELECT @PROF_NEW=PROF FROM INSERTED SELECT @TNO=TNO FROM DELETED
IF @PROF_OLD='讲师' AND @PROF_NEW='副教授' BEGIN
UPDATE T SET COMM=COMM+500 WHERE TNO=@TNO
END
IF @PROF_OLD='副教授' AND @PROF_NEW='教授' BEGIN
UPDATE T SET COMM=COMM+900 WHERE TNO=@TNO END GO
UPDATE T SET PROF='副教授' WHERE TN='刘伟'