SQL SERVER触发器问题
2017-05-17 12:36
197 查看
定义一个触发器,为教师表TEACHER定义完整性规则“教授的工资不得低于4000元,如果低于4000 元,自动改为4000元”。
课本上的例子是oracle数据库的写法,粘贴到sql server数据库上时会报错!百度上的许多改法都行不通,自己去图书馆查资料码了SQL SERVER的触发器的写法。
上面代码已经过测试,update&insert操作都没问题!希望能帮到后来学习数据库相关课程的同学。
CREATE TRIGGER Insert_Or_Update_Sal BEFORE INSERT OR UPDATE ON Teacher FOR EACH ROW AS BEGIN IF(new.Job=‘教授’)AND(new.Sal<4000) THEN new.Sal:=4000; END IF; END;
课本上的例子是oracle数据库的写法,粘贴到sql server数据库上时会报错!百度上的许多改法都行不通,自己去图书馆查资料码了SQL SERVER的触发器的写法。
--新建teacher表 CREATE TABLE TEACHER( TNO INT, TNAME CHAR(10), TJOB NVARCHAR(10), SALARY INT ); --BEFORE级触发器 ALTER TRIGGER insert_or_update_sal ON TEACHER INSTEAD OF UPDATE,INSERT AS DECLARE @TNO INT, @TNAME CHAR(10), @TJOB NVARCHAR(10), @SALARY INT BEGIN SELECT @TNO = TNO, @TNAME =TNAME, @TJOB = TJOB, @SALARY = SALARY FROM inserted;--从inserted表中取出修改的数据 IF EXISTS(SELECT * FROM TEACHER WHERE TNO=(SELECT TNO FROM INSERTED)) AND ( @TJOB = N'教授') AND (@SALARY < 4000)--当修改表中教授工资时,如果小于4000,则修改成4000 BEGIN update TEACHER set SALARY = 4000 where Teacher.TNO = @TNO; END ELSE IF EXISTS(SELECT * FROM TEACHER WHERE TNO=(SELECT TNO FROM INSERTED))--否则,则按原操作修改 BEGIN UPDATE TEACHER set TNAME=@TNAME, TJOB=@TJOB, SALARY = @SALARY WHERE TEACHER.TNO = @TNO; END ELSE IF NOT EXISTS(SELECT * FROM TEACHER WHERE TNO=(SELECT TNO FROM INSERTED)) AND ( @TJOB = N'教授') AND (@SALARY < 4000)--当插入教授数据时,如果工资小于4000,则修改成4000 BEGIN INSERT TEACHER VALUES(@TNO, @TNAME, @TJOB, 4000); END ELSE IF NOT EXISTS(SELECT * FROM TEACHER WHERE TNO=(SELECT TNO FROM INSERTED))--否则,则按原操作插入 BEGIN INSERT TEACHER VALUES(@TNO, @TNAME, @TJOB, @SALARY); END END
上面代码已经过测试,update&insert操作都没问题!希望能帮到后来学习数据库相关课程的同学。
相关文章推荐
- SQL Server触发器问题总结
- SQL SERVER 2005 触发器引起的问题
- SQL Server触发器问题总结
- SQL Server触发器问题总结
- SQL Server技术问题之触发器优缺点
- SQL SERVER 2005:在After Insert触发器中使用INSERT后,影响SCOPE_IDENTITY 问题
- CSDN-SQL Server触发器问题总结
- [SQL Server] 多触发器执行问题
- SQL Server:在触发器中对远程链接服务器进行更新操作的问题
- SQL Server触发器问题总结
- SQL Server:在触发器中对远程链接服务器进行更新操作的问题
- SQL SERVER中日期问题的解决
- SQL Server加密存储过程的破解问题
- 微软工程师对SQL Server中可不可以指定某一些语句不记录到日志。问题的回复。
- 新手宝典:SQL Server 几个安全问题
- SQL Server补丁版本的检查和安装过程中常见问题
- SQL Server的collation问题
- SQL SERVER中日期问题的解决
- 关于触发器的问题?
- 安装 PrintManager 和 SQL Server 所遇到的问题