实验9  SQL Server 的触发器

一、实验目的
1.了解触发器的触发过程和类型
2.通过执行SQL脚本,掌握创建触发器并测试触发器
3.掌握通过使用触发器维护数据完整性的方法。
二、实验要求
1.按指定要求创建触发器。
三、实验步骤
1.创建一个名为tr_age的触发器,要求在插入和更新时检查AGE是否在15到60之间,如不在15到60,则弹出“年龄不合法”提示信息,SQL代码如下所示:

CREATE TRIGGER tr_age
ON members
FOR INSERT,UPDATE
ASDECLARE @age INTSELECT @age = YEAR(GETDATE())-YEAR(m_birth)FROM insertedIF @age NOT BETWEEN 15 AND 60BEGINROLLBACK TRANSACTIONRAISERROR('年龄不合法',16,10)END
创建完触发器tr_age后,再按F5执行以下更新数据表memebers的SQL代码:
UPDATE members
SET m_birth='2000-6-4'
WHERE m_account='zhao888'

执行此段SQL更新记录代码后,将在结果框中显示以下消息,表示触发了数据表memebers中的触发器tr_age:

服务器: 消息 50000,级别 16,状态 10,过程 tr_age,行 15 年龄不合法

同样,执行以下插入数据表members的SQL代码,也一样会触发器在数据表members中定义的触发器tr_age:

INSERT INTO members VALUES('dy','dy','女','1900-5-4','北京市',1000,'12345')

2.基于“商品表”创建AFTER INSERT触发器tr_insert_price,实现新添记录数据时商品的价格限制在10000以内,SQL代码如下所示:

CREATE TRIGGER tr_insert_price
ON products
AFTER INSERT
ASDECLARE @price moneySELECT @price = p_priceFROM insertedIF @price > 10000BEGINROLLBACK TRANSACTIONRAISERROR('商品价格超出范围',16,10)END

3.查看所创建触发器详细信息,SQL代码如下所示:

USE eshop
EXEC sp_helptrigger members
EXEC sp_helptext tr_age
EXEC sp_helptrigger products
EXEC sp_helptext tr_insert_price

4.添加如下记录,测试tr_insert_price触发器的功能。
‘0240810331’,‘奇瑞小轿车’,‘2005-06-13’,8,‘25860.0’,‘大折扣’

INSERT INTO products VALUES('','奇瑞小轿车','2005-06-13',8,25860.0,'大折扣')

再按F5或点击工具栏上的运行按钮“”,运行插入记录到数据表的SQL代码,将触发在数据表中定义的触发器,在结果框中显示以下消息:

服务器: 消息 50000,级别 16,状态 10,过程 tr_insert_price,行 14 商品价格超出范围

5.基于“商品表”创建AFTER UPDATE触发器tr_update_price,实现修改记录数据时商品的价格限制在10000以内,SQL代码如下所示:

CREATE TRIGGER tr_update_price
ON products
AFTER UPDATE
ASDECLARE @price MONEYSELECT @price = p_priceFROM insertedIF @price > 10000BEGINROLLBACK TRANSACTIONRAISERROR('商品价格超出范围',16,10)END

6.将商品号为“0130810324”的价格修改为12800,测试tr_update_price触发器的功能。(T-SQL)在查询分析器输入如下更新数据表products中记录的SQL代码:

USE eshop
UPDATE products
SET p_price = 12800
WHERE p_no = ''

再按F5或点击工具栏上的运行按钮“”,运行插入记录到数据表的SQL代码,将触发在数据表中定义的触发器,在结果框中显示以下消息:

服务器: 消息 50000,级别 16,状态 10,过程 tr_update_price,行 14 商品价格超出范围

四、注意事项
1.触发器的类型
2.触发器和约束的区别

实验9 SQL Server 的触发器相关推荐

  1. 如何使用SQL Server INSTEAD-OF触发器

    如何使用SQL Server INSTEAD-OF触发器 触发器是类似于存储程序的数据库对象,它响应数据库环境下的某个请求.SQL Sever 2005包含3个触发器对象:AFTER,数据定义语言 ( ...

  2. 实验10 SQL Server 数据备份/恢复

    实验10 SQL Server 数据备份/恢复 一.实验目的 1.了解数据库备份的过程和属性设置: 2.掌握应用企业管理器备份和恢复数据库: 3.掌握应用T-SQL备份和恢复数据库: 4.掌握数据导入 ...

  3. 实验8 SQL Server 的存储过程

    实验8 SQL Server 的存储过程 一.实验目的 1.掌握使用T-SQL编程的方法 2.掌握使用T-SQL语句创建一个存储过程并验证 3.掌握创建和执行带参数的存储过程 4.熟练使用系统存储过程 ...

  4. 实验2 SQL Server 表操作

    实验2 SQL Server 表操作 一.实验目的 1.了解表设计和表结构相关知识. 2.掌握管理工具创建.修改.查看和删除表的方法. 3.掌握T-SQL语句创建.修改.查看和删除表的方法. 4.了解 ...

  5. SQL Server:触发器详解

    SQL Server:触发器详解 1. 概述 2. 触发器的分类 3. Inserted和Deleted表 4. 触发器的执行过程 5. 创建触发器 6. 修改触发器: 7. 删除触发器: 8. 查看 ...

  6. 数据库 查询计算机系姓王,数据库上机实验报告——SQL Server 2008 简单查询.doc

    实验题目SQL Server 2008 简单查询实验时间2016年5月13日实验地点T616实验成绩 实验性质□验证性 √设计性 □综合性教师评价: □算法/实验过程正确: □源程序/实验内容提交 □ ...

  7. sql server update触发器_SQL Server 触发器

    T-SQL 触发器 触发器分为 BEFORE触发器*(SQL Server不支持,Oracle支持)在事件发生时触发. AFTER触发器是 SQLServer生成的最初用于自动相应数据修改的机制.在 ...

  8. 数据库《实验一 SQL Server数据库及对象的设计》

    实验内容: 实验问题描述: 某学院有若干专业,每个专业有若干学生:学院每年每学期都开设有若干门课程:每门课程有多个学生选修,每个学生每学期可以同时选修多门课程,每个学生对于同一门课程可以多次选修,但每 ...

  9. Sql Server 因为触发器问题导致数据库更新报错“在触发器执行过程中引发了错误,批处理已中止”的问题处理...

    在维护一个非常旧的项目时,由于该项目版本已经非常老了,而且在客户现场运行的非常稳定,更要命的是本人目前没有找到该项目的代码,为了处理一个新的需求而且还不能修改程序代码,于是决定从数据库入手,毕竟该项目 ...

最新文章

  1. 如何启用 SAP Spartacus Guest checkout
  2. java和python对比----1:
  3. 深入理解java虚拟机 - jvm高级特性与最佳实践(第三版)_JVM虚拟机面试指南:年薪30W以上高薪岗位需求的JVM,你必须要懂!...
  4. 44.分治算法练习:  一元三次方程求解
  5. Python爬虫扩展库scrapy选择器用法入门(一)
  6. FriendStyle CSS
  7. BPM 与 SOA的演进与展望
  8. Self-paced and auto-weighted multi-view clustering 阅读笔记
  9. Android Studio开发(六)短距离无线通信——蓝牙通信
  10. 让Boo成为头等语言的新尝试
  11. 关于风险回归的Cox 模型构建,森林图(1)
  12. 京东关于区块链的发展历程
  13. CD19药物|适应症|市场销售-上市药品前景分析
  14. Picked up _JAVA_OPTIONS: -Xmx900M”
  15. 《软件研发效能度量规范》的解读与实践(文末附有下载)
  16. 扫地机器人隔板_让父母少弯腰的家务神器 -- 追觅扫拖机器人慧目F9评测
  17. 必看:华为云服务器选择注意事项
  18. 调度算法的评价指标【操作系统学习笔记】
  19. python 文档生成_文档生成器 mkdocs
  20. 一类6维Lorenz型超混沌系统的有限时间驱动-响应同步

热门文章

  1. 原生js实现简单JSONP
  2. js替换数组中字符串实例
  3. HTML5教程之-文件拖拽功能实现
  4. HTML/CSS 知识点
  5. 八、VueJs 填坑日记之参数传递及内容页面的开发
  6. mysql中ibdata1过大的问题
  7. 简单利用HTTP中的PUT协议拿下SHELL
  8. 关于OPENSSL的使用
  9. Wordpress prettyPhoto插件跨站脚本漏洞
  10. Linux下动态库使用小结