&练习一

如下所示三张表( student,grade,student_updata_before ):

student表

grade表

Student_update_before表

# 触发器需要实现一下要求:将学生被删除前的信息记录到student_updata_before 表中,并记录操作的用户ip和修改时间,并在INFOR字段备注操作属性为“删除学生数据”。

触发器如下(如有问题,欢迎指出):

 1 CREATE TRIGGER De_stu
2 ON student
3 FOR DELETE
4 AS
5 IF ( SELECT COUNT(1) FROM inserted ) > 1
6 BEGIN
7 RAISERROR('每次只能删除一条数据',16,10);
8 ROLLBACK;
9 END
10 ELSE
11 BEGIN
12 DECLARE @Ubsid int,@O_sid int,@O_sname varchar(20),@O_sage int,@O_sgname varchar(20),@inf varchar(20),@test varchar(100);
13 SELECT @inf = USER_NAME();
14 SELECT TOP 1 @O_sid=Sid,@O_sname=Sname,@O_sage=Sage,@O_sgname=Sg_name FROM deleted;
15 SET @test ='USER:'+ @inf +'|Delete Data:' + CONVERT(varchar,@O_sid) +' '+ @O_sname +' '+ CONVERT(varchar,@O_sage) +' '+ @O_sgname + ' 删除学生数据';
16 IF (SELECT COUNT(1) FROM Student_update_before) = 0
17 SET @Ubsid = 1;
18 ELSE
19 SET @Ubsid = (SELECT MAX(Ubsid) FROM Student_update_before) + 1;
20 INSERT INTO Student_update_before VALUES(@Ubsid,@test,GETDATE());
21 END
22 GO

# 触发器需要实现一下要求:删除班级信息时,将将学生表中班级为删除班级的所有学生信息插入到毕业学生信息表(his_student )中,然后将学生表中的学生删除。

*注意:his_student 表结构与student表一致,需提前创建

触发器如下(如有问题,欢迎指出):

 1 CREATE TRIGGER De_grade
2 ON grade
3 FOR DELETE
4 AS
5 IF ( SELECT COUNT(1) FROM DELETED ) > 1
6 BEGIN
7 RAISERROR('每次只能删除一条数据!请重新选择!',16,10)
8 END
9 ELSE
10 BEGIN
11 insert INTO his_student SELECT * FROM student WHERE Sg_name = (SELECT TOP 1 Gname FROM deleted);
12 DELETE FROM student WHERE Sg_name = (SELECT TOP 1 Gname FROM deleted);
13 end

最新文章

  1. webkit 模拟点击 winform
  2. ironpython 2.75 在c#中的使用
  3. while, do-while ,switch···case语句的学习与运用
  4. Core Java Volume I — 4.1. Introduction to Object-Oriented Programming
  5. MySql语句大全:创建、授权、查询、修改等
  6. ado执行sql查询出现“发送数据流时出现算术溢出”错误
  7. jdbc三种常见用法
  8. gcc和g++的区别
  9. 给div命名,使逻辑更加清晰
  10. Android应用程序中的多个Activity的显示创建和调用
  11. 转: requestAnimationFrame,Web中写动画的另一种选择
  12. Beaker 1.6.4 : Python Package Index
  13. 教你如何用AST语法树对代码“动手脚”
  14. lr-web services协议
  15. 微信小程序开发——使用mock数据模拟api请求
  16. 关于Java 实现抽象类的抽象方法的特性的利用---面向切面
  17. Centos6.8实现SVN提交后自动更新目录
  18. tmp32dll\sha1-586.asm(1432) : error A2070:invalid instruction operands 编译openssl出错
  19. clear/reset select2,重置select2,恢复默认
  20. BZOJ4919:[Lydsy1706月赛]大根堆(set启发式合并)

热门文章

  1. 超详细!Vue-Router手把手教程
  2. 表单验证插件jquery-validation以及案例
  3. Spring WebFlux 基础教程:WebSocket 使用
  4. TCP 才不傻!
  5. Android开发失业六个月了,无限的焦虑
  6. 6.算法竞赛中的常用JAVA API :Math类(转载)
  7. docker 部署mysql连接问题
  8. noip13
  9. 题解 [美团 CodeM 初赛 Round B]景区路线规划
  10. WPF 知识点总结