SQL 触发器的创建和使用(SQL2005)
- 格式:ppt
- 大小:262.00 KB
- 文档页数:67
SQL Server 2005触发器4现在测试一下在上一章节中建立好的三个触发器的功能。
下面所有的测试都是在【查询编辑器】对话框里进行的,要打开【查询编辑器】对话框,只要单击Management Studio里【新建查询】按钮即可。
测试例三:例三是保证【Northwind】数据库里不能删除表和修改表,在【查询编辑器】对话框里输入一个删除表的SQL语句:Drop table 操作记录表不允许删除表格测试例四:例四是保证当前服务器里的所有数据库不能被删除,在【查询编辑器】对话框里输入一个删除数据库的SQL语句:Drop DataBase test不允许删除数据库测试例五:例五是记录对【Northwind】所进行的操作,在【查询编辑器】对话框里输入一条添加数据表和一条删除数据表的SQL语句,然后再用Select语句查看【目志记录表】数据表里所有的记录:CREATE TABLE 测试表(编号int IDENTITY(1,1) NOT NULL,测试内容varchar(50) NOT NULL)GODrop table 测试表GOselect * from 日志记录表GO运行时不要忘了,前面曾经建立过一个不能删除数据表的触发器,要先把它禁用或删除。
记录对数据库的操作11.16 2005新增功能:查看与修改DDL触发器DDL触发器有两种,一种是作用在当前SQL Server服务器上的,一种是作用在当前数据库中的。
这两种DDL触发器在Management Studio中所在的位置是不同的。
l 作用在当前SQL Server服务器上的DDL触发器所在位置是:【对象资源管理器】,选择所在SQL Server服务器,定位到【服务器对象】à【触发器】,在【摘要】对话框里就可以看到所有的作用在当前SQL Server服务器上的DDL 触发器。
l 作用在当前数据库中的DDL触发器所在位置是:【对象资源管理器】,选择所在SQL Server服务器,【数据库】,所在数据库,定位到【可编程性】à【数据库触发器】,在摘要对话框里就可以看到所有的当前数据库中的DDL触发器。
SQL触发器的创建和使用SQL触发器(trigger)是用来更改或响应数据库系统中的特定动作或事件的数据库对象,可以定义它们在表中特定数据发生一定的变化时自动地执行的SQL语句,一旦被触发,触发器就会自动地执行被定义的SQL语句。
在SQL Server 2005中,可以创建触发器来实现数据库的安全性和完整性。
触发器的定义可以放置在视图之外,以便于管理,可以动态地添加,修改和删除触发器,也可以创建多种不同的触发器。
一.创建触发器在SQL Server 2005中,可以使用CREATE TRIGGER语句来创建触发器。
如下所示:SQLCREATE TRIGGER trg_Customer_InsertON Customer FOR INSERTASBEGIN-- Trigger logic goes hereEND上面的语句创建一个名为 trg_Customer_Insert 的触发器,作用在Customer 表上,当 INSERT 操作发生时,则自动执行 Trigger logic。
二.使用触发器一旦触发器被创建,有两种方法可以使其起作用,即:对表的INSERT操作对表的UPDATE操作在使用触发器之前,有必要检查它的权限问题,因为只有拥有ALTER 权限的用户才能执行CREATETRIGGER或ALTERTRIGGER的操作。
1.对表的INSERT操作当插入一条记录到表中时,触发器将会自动执行:SQLINSERT INTO Customers( CustomerID, CustomerName, Address, City, State, ZipCode )2.对表的UPDATE操作当更新表中的记录时,触发器将会自动执行:SQLUPDATE CustomersSET Address = '456 Main Street'三.其他常用语句1.删除触发器。
工程数据库设计与应用实验报告实验四创建触发器的基本操作学号: 1030412612 班级:计算机1206 姓名:王成义成绩指导教师:戴月明一、实验目的通过实验熟练掌握创建触发器的方法,掌握如何新建触发器、修改及使用触发器的方法。
二、实验内容1、创建一个触发器:修改学生表里的姓名,同步更新成绩表里的姓名。
2、创建第二个触发器:删除学生表中的某个学生,同步删除成绩里的该学生的成绩记录。
三、实验完成情况1、创建一个名为truS的触发器,当修改学生表里的姓名,同步更新成绩表里的姓名。
if(object_id('truS','TR')isnotnull)droptrigger truSgoCREATETRIGGER truSON SFORUPDATEASIFUPDATE(Sname)BEGINSETNOCOUNTON;UPDATE SCSET Sname=i.SnameFROM SC sc,Deleted d,Inserted i--注意Deleted 与Inserted分别表示触发事件的表“旧的一条记录”和“新的一条记录”。
WHERE sc.Sid=d.Sid--(select Sname from insertted) where SC.Sid=(select Sid from inserted)ENDGO操作结果如图:(图1)(图2)(图3)(图4)2、创建一个名为trdS的触发器,当删除学生表中的某个学生,同步删除成绩里的该学生的成绩记录。
if(object_id('trdS','TR')isnotnull)droptrigger trdSgoCREATETRIGGER trdSON SFORDELETEASBEGINSETNOCOUNTON;DELETE SCFROM SC sc,Deleted d--注意Deleted 与Inserted分别表示触发事件的表“旧的一条记录”和“新的一条记录”。
3.存储过程和触发器的设计一、实验目的和要求(1)掌握 SQL Server中的触发器的使用方法;(2)掌握存储过程的操作方法。
二、实验内容和原理1. 基本操作实验在读者-图书数据库中用Transact-SQL语句描述下列功能:(1)在读者表上建立一个DELETE类型的触发器lianxi_del,触发动作是显示信息(已删除读者表中的数据),执行下列语句:create trigger lianxi_delon 读者for deleteas print ‘已删除读者表中的数据’(2)建立一个查询指定读者号的阅读信息的存储过程List_jy,输入参数为读者号,如果没有输入读者号,则要输出提示信息。
三、算法描述及实验步骤1. 触发器的操作(1)建立触发器首先,打开企业管理器,定位数据库并找到要创建触发器的表;然后,右击该表名,在弹出的快捷菜单中选择“设计表”,在打开的“设计表”窗口中单击按钮。
最后,在触发器属性窗口中输入触发器的内容,并单击“确定”按钮。
(2)查看触发器使用企业管理器2. 提高操作实验在学生-课程数据库中用Transact-SQL语句描述下列功能:1)为学生表建立一个名TRI_INSERT的INSERT触发器。
功能是当用户向学生表添加数据时,同时也把这些数据添加到stu表中。
其中:学生表和表stu的结构相同。
CREATE TRIGGER TRI_INSERTON STUDENTFOR INSERTASINSERT INTO STUSELECT * FROM INSERTED(2)创建一查询存储过程,过程名称为P_CX。
参数是学号,输出信息是指定学号所应的姓名、课程名称、成绩。
运行时若没有指定学号,则提示请输入学号;若学号不存在则提示学号不存在。
create procedure P_CX@sno char(10) =nullasif @sno is nullbeginprint '请输入一个学号'returnendelse if(not exists(select * from student where sno=@sno))print '学号不存在'elseselect sname,o,gradefrom student,course,scwhere student.sno=sc.sno and o=o and student.sno=@sno(3)创建一统计存储过程,过程名称为P_CJTJ。