信息系统与数据库技术:4.4_6_SQL Server存储过程、触发器

上传人:新** 文档编号:569550612 上传时间:2024-07-30 格式:PPT 页数:41 大小:759KB
返回 下载 相关 举报
信息系统与数据库技术:4.4_6_SQL Server存储过程、触发器_第1页
第1页 / 共41页
信息系统与数据库技术:4.4_6_SQL Server存储过程、触发器_第2页
第2页 / 共41页
信息系统与数据库技术:4.4_6_SQL Server存储过程、触发器_第3页
第3页 / 共41页
信息系统与数据库技术:4.4_6_SQL Server存储过程、触发器_第4页
第4页 / 共41页
信息系统与数据库技术:4.4_6_SQL Server存储过程、触发器_第5页
第5页 / 共41页
点击查看更多>>
资源描述

《信息系统与数据库技术:4.4_6_SQL Server存储过程、触发器》由会员分享,可在线阅读,更多相关《信息系统与数据库技术:4.4_6_SQL Server存储过程、触发器(41页珍藏版)》请在金锄头文库上搜索。

1、1. 1. 标识符、常量和变量标识符、常量和变量 (1 1)标识符:由用户定义的名称,用来标识各种对象)标识符:由用户定义的名称,用来标识各种对象如服务器、数据库、数据库对象、变量等。如服务器、数据库、数据库对象、变量等。 如果标志符中包含空格,要用双引号(如果标志符中包含空格,要用双引号(“”“”)或方括)或方括号号()()扩起来。如:扩起来。如:Student NameStudent Name不合法不合法, ,必须将其必须将其表示为表示为 Student NameStudent Name或或Student NameStudent Name。4.3.4 4.3.4 T-SQLT-SQL的运算

2、功能和控制流程的运算功能和控制流程 T-SQL T-SQL虽然和高级语言不同,但它也有运算、控制等功虽然和高级语言不同,但它也有运算、控制等功能,以支持复杂的数据检索和集合操纵能,以支持复杂的数据检索和集合操纵 (2 2)常量:在程序运行过程中值不变的量。)常量:在程序运行过程中值不变的量。 字符串常量、字符串常量、日期时间常量日期时间常量要用单引号扩起,例如要用单引号扩起,例如Li Li Ping Ping ,1990-05-041990-05-04。常量可分为字符串常量、整型常量、实型常量、日期时常量可分为字符串常量、整型常量、实型常量、日期时间常量、货币常量和唯一标识常量。间常量、货币常

3、量和唯一标识常量。单引号中的字符串包含单引号,可以使用两个单引号表单引号中的字符串包含单引号,可以使用两个单引号表示嵌入的单引号。示嵌入的单引号。 (3 3)变量:在程序运行过程中其值可以被改变的量)变量:在程序运行过程中其值可以被改变的量 。1)1)变量的分类变量的分类 局部变量局部变量:由:由用户定义用户定义和使用,其名称前有一个和使用,其名称前有一个 符号。符号。 全局变量全局变量:全局变量由:全局变量由系统定义系统定义和维护,其名称前有和维护,其名称前有两个两个 符号。符号。 2 2)局部变量的定义和赋值)局部变量的定义和赋值 定义格式:定义格式:DECLARE局部变量名局部变量名数据

4、类型数据类型【例】【例】DECLARExfloat,varchar(8) 该定义语句定义了变量该定义语句定义了变量x x是浮点实型,变量是浮点实型,变量varvar是长度为是长度为8 8的定长字符数据类型。的定长字符数据类型。 如在一条语句中声明多个变量,各变量之间用如在一条语句中声明多个变量,各变量之间用“,”,”分隔。分隔。 局部变量被定义后其初始值为局部变量被定义后其初始值为NULLNULL。 局部变量赋值的基本语法格式:局部变量赋值的基本语法格式:SET局部变量名局部变量名=表达式表达式SELECT局部变量名局部变量名=表达式表达式【例例4-534-53】定义变量定义变量c_codec

5、_code为长度为为长度为6 6的定长字符串,的定长字符串,scorescore为精度为为精度为1 1的浮点型,并分别用的浮点型,并分别用SETSET和和SELECTSELECT语句为语句为它们赋值,然后用这两个变量查询它们赋值,然后用这两个变量查询T_GradeT_Grade表中课程代码表中课程代码为为“110006”110006”且成绩低于且成绩低于9090分的记录。分的记录。DECLAREc_codechar(6),scoreNumeric(3,1)SETc_code=130001SELECTscore=80SELECT*FROMT_GradeWHERECourseCode=c_code

6、 ANDGrade=3 BEGIN SET text=你选了你选了+CAST(cn AS char(2) /* CAST函数将函数将cn的值转换为长度为的值转换为长度为2的字符数据的字符数据*/ SET text=text+门课。很好,你完成了任务!门课。很好,你完成了任务! ENDELSE BEGIN SET text=你选了你选了+CAST(cn AS char(2) SET text=text+门课。选课太少,加油!门课。选课太少,加油! ENDSELECT text AS 选课提示选课提示图4-53 统计选课数目结果(3 3)WHILEWHILE语句语句实现一条实现一条SQLSQL语句

7、或语句或SQLSQL语句块重复执行。语句块重复执行。 语法格式:语法格式:WHILE WHILE 条件表达式条件表达式 SQLSQL语句语句1 1 BREAK BREAK SQL SQL语句语句2 2 CONTINUECONTINUE说明:说明:该该语语句句计计算算条条件件表表达达式式的的值值,如如果果为为TRUETRUE,则则执执行行WHILEWHILE后的语句块。后的语句块。 BREAKBREAK为为从从本本层层WHILEWHILE循循环环中中退退出出,当当存存在在多多层层循循环环嵌嵌套套时时,使使用用BREAKBREAK语语句句只只能能退退出出其其所所在在的的内内层层循循环环,然然后后重

8、重新开始外层的循环。新开始外层的循环。CONTINUECONTINUE为结束本次循环,开始下一次循环的判断。为结束本次循环,开始下一次循环的判断。 【例例4-564-56】计算计算1010!。 DECLARE p int, i smallint, text varchar(100)SET p=1SET i=1WHILE i=90 THEN A)=90 THEN A WHEN WHEN AVG(GradeAVG(Grade)=80 THEN B)=80 THEN B WHEN WHEN AVG(GradeAVG(Grade)=70 THEN C)=70 THEN C WHEN WHEN AVG(

9、GradeAVG(Grade)=60 THEN D)=60 THEN D WHEN WHEN AVG(GradeAVG(Grade)60 THEN E)60 THEN E END AS END AS 等级等级 FROM FROM T_GradeT_Grade GROUP BY GROUP BY StudentCodeSELECTStudentCodeSELECT图4-56 成绩等级部分结果5 5注释注释T-SQLT-SQL中提供两种注释方法,分别用于单行和多行注释。中提供两种注释方法,分别用于单行和多行注释。(1)单行注释()单行注释(-)语法格式:语法格式:- 注释文本内容注释文本内容文本字

10、符串与要执行的代码可同处一行,也可另起一行。文本字符串与要执行的代码可同处一行,也可另起一行。(2)多行注释()多行注释(/* */) 语法格式:语法格式: /* 注释文本内容注释文本内容*/ 例如:例如:USE School -打开打开School数据库数据库.SELECT * FROM T_Student /*执行一个执行一个SELECT语句,显示学语句,显示学生表中所有学生信息生表中所有学生信息*/4.4 视图(1) (1) 视图是一个虚拟表,其内容来自对表查询的基础上。视图是一个虚拟表,其内容来自对表查询的基础上。(2) (2) 视图的行和列数据来自于定义视图的查询所引用的表,视图的行

11、和列数据来自于定义视图的查询所引用的表,并在引用表时动态生成。并在引用表时动态生成。(3) (3) 视图的结构和显示的数据行并没有实际地以视图结构视图的结构和显示的数据行并没有实际地以视图结构存储在数据库中,而是存储在视图所引用的基本表中。存储在数据库中,而是存储在视图所引用的基本表中。(4)(4)视图集中、简化和自定义每个用户对数据库的不同认识视图集中、简化和自定义每个用户对数据库的不同认识, ,是数据库的外模式。用户可以将数据库中自己感兴趣的特是数据库的外模式。用户可以将数据库中自己感兴趣的特定数据展现在视图中。定数据展现在视图中。(5) (5) 视图也可作为一种安全机制,允许用户通过视图

12、访问视图也可作为一种安全机制,允许用户通过视图访问数据,而不授予用户直接访问视图基础表的权限。数据,而不授予用户直接访问视图基础表的权限。数据库的三级模式结构数据库的三级模式结构视图示例:视图示例:4.4.1创建视图创建视图创建视图的方法: 1)在企业管理器中创建; 2)使用T-SQL的CREATE VIEW语句。 使用企业管理器创建好视图后,可以使用“生成SQL脚本”功能查看和保存其对应的SQL定义语句。 创建建视图时必必须遵循以下原遵循以下原则:只能在当前数据库中创建视图。 视图在数据库中作为一个对象存储,视图名称不得与数据库中的表重名。 1 1使用企业管理器创建视图使用企业管理器创建视图

13、 【例4-59】在数据库School中,建视图V_StudentGrade,查询学生成绩情况。1)展开School数据库文件夹,右击“视图”对象,在弹出的快捷菜单上选择“新建视图”命令,打开新建视图对话框,该对话框包括四个窗格:上格是表及关系窗口,中格为视图选择表中列的网格,然后是SQL语句窗格,下格是结果窗格。2)右单击对话框窗口上格,在快捷菜单中选择“添加表”命令,显示添加表对话框。 图4-57 新建视图对话框图4-58 添加表对话框3)在添加表对话框中选择与视图有关的表、视图或函数(通过Ctrl或Shift键可选择多项),然后单击【添加】按钮;或者直接双击要添加的表等,即可将其添加到视图

14、的查询中。这里选择表:T_Student、T_Course和T_Grade。4)选择的表添加到窗口的上格,单击每个表字段前的复选框,可将该字段添加到视图中。也可在所示窗口的第二个子窗口选择视图字段,并可指定列的别名、排序方式和规则等。在选择过程中,第三个子窗口中的SELECT语句也会随之自动改变。也可直接在该子窗口中输入SELECT语 句 。 这 里 选 择 StudentName、 CourseName和Grade三个字段。 5)单击工具栏上的按钮执行,结果显示窗口的第三个子窗口。 6)单击工具栏上的按钮,在弹出的另存为对话框中为视图命名,本例输入“V_StudentGrade”,单击【确定

15、】按钮保存视图,从而完成视图创建。 图4-59 V-StudentGrade视图的建立【例例4-60】在数据库在数据库School中,建立视图中,建立视图V_StudentAvgGrade, 查询学生的平均成绩。查询学生的平均成绩。1)在新建视图窗口中上格选择表)在新建视图窗口中上格选择表T_Student和和T_Grade;2)在字段网格中选择字段和设定汇总字段,或直接在)在字段网格中选择字段和设定汇总字段,或直接在SQL语语句窗格中辅助完成语句:句窗格中辅助完成语句:SELECT StudentName, AVG(Grade) AS 平均成绩平均成绩FROM T_Grade INNER J

16、OIN T_Student ON T_Grade.StudentCode = T_Student.StudentCodeGROUP BY StudentName3)运行查看视图结果,保存该视图为)运行查看视图结果,保存该视图为V_StudentAvgGrade。图4-60 V-StudentAvgGrade视图的建立【例例4-61】在数据库在数据库School中,建立视图中,建立视图V_StudentAvgGradeExcellent, 查询平均成绩大于等于查询平均成绩大于等于90学生。学生。 该例可以参照前面方法在基本表该例可以参照前面方法在基本表T_Student和和T_Grade上创建。

17、但由于视图的内容也可以来自另一个上创建。但由于视图的内容也可以来自另一个视图,本例基于视图,本例基于V-StudentAvgGrade完成。各窗格设置完成。各窗格设置及查询结果如图及查询结果如图4-61所示。所示。图4-61 V-StudentAvgGradeExcellent视图的建立4.4.2 使用视图使用视图 创创建建后后的的视视图图跟跟的的表表的的用用法法相相同同,可可以以通通过过视视图图查查询询和修改数据库。和修改数据库。【例例4-624-62】在在数数据据库库SchoolSchool中中,从从视视图图V_StudentGradeV_StudentGrade查查询陈佳迪的成绩。询陈佳

18、迪的成绩。 SELECT * FROM SELECT * FROM V_StudentGradeV_StudentGrade WHERE WHERE StudentNameStudentName=陈佳迪陈佳迪 4.4.3修改和删除视图修改和删除视图 (1 1)在企业管理器中修改视图)在企业管理器中修改视图1 1)在在企企业业管管理理器器中中展展开开相相应应数数据据库库和和视视图图,右右单单击击要要修修改改的视图,在弹出的快捷菜单上选择的视图,在弹出的快捷菜单上选择“设计视图设计视图” ” 。2 2)在在弹弹出出的的“设设计计视视图图”窗窗口口中中,可可以以用用在在企企业业管管理理器器中中创建视

19、图相同的方法修改已定义好的视图。修改完毕存盘。创建视图相同的方法修改已定义好的视图。修改完毕存盘。(2 2)在企业管理器中删除视图)在企业管理器中删除视图1 1)在在企企业业管管理理器器中中展展开开相相应应数数据据库库和和视视图图,右右单单击击要要删删除除的视图,在弹出的快捷菜单上选择的视图,在弹出的快捷菜单上选择“删除删除” ” 。2)在在弹弹出出的的对对话话框框中中单单击击【确确定定】按按钮钮,即即可可删删除除选选择择的的视图。视图。 4.5 存储过程存储过程(1)(1)存储过程是存储过程是T-SQLT-SQL语句的集合,它作为数据库对象之一语句的集合,它作为数据库对象之一被存储在数据库中

20、。被存储在数据库中。 (2)(2)存储过程的作用和使用方式类似于一些编程语言中的存储过程的作用和使用方式类似于一些编程语言中的过程。过程。使用存储过程有以下优点:使用存储过程有以下优点:1)1)可以在一个存储过程中执行多条可以在一个存储过程中执行多条SQLSQL语句;语句;2)2)可通过输入参数的变化调用存储过程进行动态执行;可通过输入参数的变化调用存储过程进行动态执行;3)3)存存储储过过程程在在创创建建时时就就在在服服务务器器端端进进行行了了编编译译,节节省省SQLSQL语句的运行时间;语句的运行时间;4)4)提提供供了了安安全全机机制制,它它限限制制了了用用户户访访问问SQLSQL语语句

21、句的的权权利利,只为特定用户开放存储过程。只为特定用户开放存储过程。 4.5.1 创建存储过程创建存储过程 用户首先创建存储过程以实现特定的功能,然后可在程用户首先创建存储过程以实现特定的功能,然后可在程序中调用该存储过程执行。序中调用该存储过程执行。 1 1使用企业管理器创建视图使用企业管理器创建视图 【例【例4-634-63】在在SchoolSchool数据数据库中,中,创建存建存储过程程proc_Courseproc_Course, 查询所有所有课程信息。程信息。 1 1)打开企业管理器,展开)打开企业管理器,展开SchoolSchool数据库文件夹,右单击数据库文件夹,右单击“存储过程

22、存储过程”,在弹出的快捷菜单上选择,在弹出的快捷菜单上选择“新建存储过程新建存储过程”命令,打开新建存储过程对话框。命令,打开新建存储过程对话框。 2 2)将)将“OWNER”OWNER”和和“PROCEDURE PROCEDURE NAME”NAME”参数分别替换参数分别替换成存储过程所有者的成存储过程所有者的名称和存储过程的名名称和存储过程的名称。默认为称。默认为dbodbo和和 PROCEDURE NAMEPROCEDURE NAME。 3 3)从)从“文本文本”列表框的第二行开始列表框的第二行开始输入存入存储过程的程的T-SQLT-SQL语句。句。这里里输入的入的T-SQLT-SQL语

23、句句仅有一条有一条: :SELECT * FROM SELECT * FROM T_CourseT_Course。 4 4)单击【语法法检查】按按钮可以可以检查创建存建存储过程的程的T-SQLT-SQL语句的句的语法是否正确。法是否正确。单击【另存另存为模板模板】按按钮可将所可将所创建建的存的存储过程程设置置为模板。模板。 5 5)完成后,)完成后,单击【确定确定】按按钮即即创建和保存了存建和保存了存储过程程proc_Courseproc_Course。 图4-64 创建存储过程示例2 2使用使用T-SQLT-SQL语句创建存储过程语句创建存储过程 可以直接在可以直接在SQLSQL查询分析器中

24、定义和调用存储过程。查询分析器中定义和调用存储过程。常用存常用存储过程的程的语法格式:法格式: CREATE PROCDURE CREATE PROCDURE 存储过程名存储过程名 形式参数形式参数 数据类型数据类型VARYING=VARYING=默认值默认值OUTPUTOUTPUT AS AS SQL SQL语句语句1 1 SQL SQL语句句n n 说明:说明: “形式参数形式参数”名称必名称必须符合符合标识符符规则;OUTPUTOUTPUT表示表示该参数参数是可以返回的,可将信息返回是可以返回的,可将信息返回调用者;如果有多个参数,用者;如果有多个参数,可以依次按以上参数定可以依次按以上

25、参数定义规则列出,用逗号列出,用逗号“,”,”隔开。隔开。 【例【例4-644-64】在在SchoolSchool中创建一个的存储过程中创建一个的存储过程proc_SearchStudentproc_SearchStudent, ,查询指定学生的选课情况。查询指定学生的选课情况。CREATE PROC CREATE PROC proc_SearchStudentproc_SearchStudent stcodestcode char(8) char(8)ASASSELECT SELECT T_Student.StudentName,T_Course.CourseNameT_Student.St

26、udentName,T_Course.CourseNameFROM T_Student JOIN FROM T_Student JOIN T_Grade JOIN T_CourseT_Grade JOIN T_CourseON T_Grade.CourseCode=T_Course.CourseCodeON T_Grade.CourseCode=T_Course.CourseCodeON T_Student.StudentCode=T_Grade.StudentCodeON T_Student.StudentCode=T_Grade.StudentCodeWHERE WHERE T_Stude

27、nt.StudentCodeT_Student.StudentCode=scodescode 4.5.2 执行存储过程执行存储过程 存存储过程定程定义后,可通后,可通过EXECTEEXECTE语句来句来执行。行。 语法格式:法格式: EXECUTE EXECUTE 存储过程名存储过程名形参形参=实参值实参值|变量变量 OUTPUT|DEFAULTOUTPUT|DEFAULT1)1)“形参形参”是是创建存建存储过程程时定定义的形参名;的形参名;2)“2)“实参参值”是是输入参数的入参数的值;3)“3)“变量量”表示用来保存参数或者返回参数的表示用来保存参数或者返回参数的变量;量;OUTPUTOU

28、TPUT表示指定表示指定参数参数为返回参数;返回参数;4)DEFAULT4)DEFAULT表示使用表示使用该参数的默参数的默认值作作为实参。参。5)5)如有多个参数,可依次按以上参数定如有多个参数,可依次按以上参数定义规则列出,用逗号列出,用逗号“,”隔开。隔开。 调用【例调用【例4-634-63】创建的存储过程】创建的存储过程proc_Courseproc_Course的语句为:的语句为:EXEC EXEC proc_Courseproc_Course调用【例调用【例4-644-64】创建的存储过程】创建的存储过程proc_SearchStudentproc_SearchStudent,查询

29、查询0510110105101101学生的选课情况。学生的选课情况。EXEC EXEC proc_SearchStudentproc_SearchStudent 05101101 05101101或或EXEC proc_ EXEC proc_ SearchStudentSearchStudent scodescode=05101101=05101101采用采用“参数参数=值值”的形的形式,各个参数的顺序可式,各个参数的顺序可以任意排列。以任意排列。实实参参顺顺序序和和定定义义时时的参数顺序一致。的参数顺序一致。【例【例4-654-65】在在SchoolSchool中中创建一个的存建一个的存储过

30、程程proc_SearchStudentAvgGradeproc_SearchStudentAvgGrade,查询某个学生的某个学生的选课数目和数目和平均成平均成绩。CREATE PROC CREATE PROC proc_SearchStudentAvgGradeproc_SearchStudentAvgGrade stcodestcode char(8), char(8), stcountstcount intint OUTPUT,stavgOUTPUT,stavg intint OUTPUT OUTPUTASASSELECT SELECT stcountstcount= =COUNT(T

31、_Grade.StudentCode),stavgCOUNT(T_Grade.StudentCode),stavg= =AVG(T_Grade.GradeAVG(T_Grade.Grade) )FROM FROM T_GradeT_GradeWHERE WHERE T_Grade.StudentCodeT_Grade.StudentCode=stcodestcodeGROUP BY GROUP BY T_Grade.StudentCodeT_Grade.StudentCode本例是带一个输入参本例是带一个输入参数和二个输出参数的数和二个输出参数的存储过程,在定义输存储过程,在定义输出参数时要用

32、出参数时要用OUTPUT进行说明。进行说明。 调用存用存储过程程proc_SearchStudentAvgGradeproc_SearchStudentAvgGrade,查询0510110105101101学生的学生的选课数目和平均成数目和平均成绩。DECLARE DECLARE scountscount intint , ,savgsavg intint EXECEXEC proc_SearchStudentAvgGradeproc_SearchStudentAvgGrade 05101101,scount 05101101,scount OUTPUT,savgOUTPUT,savg OUT

33、PUT OUTPUT PRINT PRINT 学学 生生 + + 05101101+05101101+的的 选选 课课 数数 目目 为为 +CAST(scountCAST(scount AS AS char(2)+char(2)+门门 PRINT PRINT 学生学生+ 05101101+ 05101101+的平均成的平均成绩为+STR(savg,5,2)+STR(savg,5,2)+分分 4.5.3 查看、修改和删除存储过程查看、修改和删除存储过程 用户可以利用企业管理器或用户可以利用企业管理器或T-SQLT-SQL语句来查看、修改和语句来查看、修改和删除用户创建的存储过程。删除用户创建的存

34、储过程。(1 1)查看和修改存储过程)查看和修改存储过程在在企企业业管管理理器器中中,展展开开存存储储过过程程所所属属的的数数据据库库,单单击击“存储过程存储过程”文件夹,在右边窗格中就可看到所有存储过程;文件夹,在右边窗格中就可看到所有存储过程;右右击击相相应应的的存存储储过过程程名名,在在弹弹出出的的快快捷捷菜菜单单上上选选择择“属属性性”命命令令,打打开开存存储储过过程程属属性性窗窗口口,出出现现和和创创建建存存储储过过程程相相似似的的窗窗口口,在在中中间间的的文文本本编编辑辑子子窗窗口口中中可可以以查查看看或或修修改改该存储过程的文本。该存储过程的文本。1 1使用企业管理器创建视图使用

35、企业管理器创建视图 (2 2)删除存储过程)删除存储过程右右击要要删除除的的存存储过程程名名,在在弹出出的的快快捷捷菜菜单上上选择“删除除”命命令令,弹出出“除除去去对象象”对话框框。单击【显示示相相关关性性】按按钮可可查看看该存存储过程程所所依依附附的的对象象,从从而而了了解解删除除该存存储过程程对数数据据库的的影影响响。单击【全全部部除除去去】按按钮,即即删除除了相了相应的存的存储过程程。4.6 触发器触发器 触发器是一种特殊的存储过程。触发器的创建主要触发器是一种特殊的存储过程。触发器的创建主要用来维护数据表中的数据一致性,当对数据表进行插入、用来维护数据表中的数据一致性,当对数据表进行

36、插入、删除、更新等操作时,触发器可自动执行。删除、更新等操作时,触发器可自动执行。 SQL ServerSQL Server提供了两种类型的触发器:提供了两种类型的触发器: (1 1)AFTERAFTER触触发发器器:是是在在表表中中数数据据被被修修改改之之后后才才被被触触发发,触触发发器器对对变变动动的的数数据据进进行行检检查查,如如果果发发现现错错误误,将将拒拒绝绝或回滚变动的数据。或回滚变动的数据。(2 2)INSTEAD INSTEAD OFOF触触发发器器:在在数数据据修修改改以以前前被被触触发发,并并取取代修改数据的操作,转去执行触发器定义的操作。代修改数据的操作,转去执行触发器定

37、义的操作。4.6.1 创建触发器创建触发器 1 1使用企业管理器创建触发器使用企业管理器创建触发器 【例例4-684-68】在在SchoolSchool数据数据库中中创建一个建一个简单的触的触发器器tri_StudentInsDeltri_StudentInsDel,当用,当用户插入或插入或删除除T_StudentT_Student表中学表中学生生记录时,能自,能自动显示表中的内容。示表中的内容。1 1)展展开开School“School“数数据据库/ /表表”文文件件夹,在在右右边边窗窗格格中中表表中中,右右击击T_StudentT_Student表表,在在弹出出的的快快捷捷菜菜单上上选择“

38、所所有有任任务/ /管管理触理触发器器”命令,打开触命令,打开触发器属性器属性对话框。框。 2 2)系系统创建建触触发器器语句句了了CREATE CREATE TRIGGERTRIGGER的的框框架架。修修改改框框架中的内容架中的内容为: CREATE TRIGGER tri_StudentInsDel ON dbo.T_Student FOR INSERT, DELETE AS SELECT * FROM T_Student3 3)单击【语法法检查】按按钮可以可以检查创建触建触发器的器的T-SQLT-SQL语句的句的语法是否正确。法是否正确。4 4)单击【确定确定】按按钮即保存和即保存和创建

39、了名称建了名称为“tri_StudentInsDeltri_StudentInsDel”的触的触发器。器。 当对表当对表T_Student的数据进行插入或删除操的数据进行插入或删除操作时,触发器作时,触发器“tri_StudentUpdate”将会自动执行。将会自动执行。使用使用T-SQLT-SQL创建触发器创建触发器 触发器语法格式:触发器语法格式: CREATE TRIGGER 触发器名触发器名ON 表名表名|视图名视图名FOR INSERT,UPDATE,DELETEASSQL语句段语句段【 例例 4-694-69】 在在 SchoolSchool数数 据据 库 的的 T_Student

40、T_Student表表 上上 创 建建 一一 个个 触触 发 器器tri_StudentCodeUpdatetri_StudentCodeUpdate,当当对学学号号列列进行行修修改改时,给出出提提示示信信息息并并取消修改操作。取消修改操作。 CREATE TRIGGER CREATE TRIGGER tri_StudentCodeUpdatetri_StudentCodeUpdateON ON T_StudentT_StudentFOR UPDATEFOR UPDATEASAS DECLARE text varchar(50) DECLARE text varchar(50) IF IF U

41、PDATE(StudentCodeUPDATE(StudentCode) ) BEGIN BEGIN SET text= SET text=学生数据被修改学生数据被修改! RAISERROR(text,16,1)RAISERROR(text,16,1) ROLLBACK TRANSACTION ROLLBACK TRANSACTION END END RAISEERROR(text,16,1)语句的作用是返回用户定义的语句的作用是返回用户定义的错误信息错误信息,并给出与信息关联并给出与信息关联的严重级别的严重级别(118)和有关错和有关错误调用状态的信息误调用状态的信息(1127 ) 。这里分

42、别取。这里分别取“16”和和“1”。【例例4-70】在在School数据库的数据库的T_Grade表上创建一个触发器表上创建一个触发器tri_Grade,当向,当向T_Grade表中插入一条记录时,检查该记录的学号是否在表中插入一条记录时,检查该记录的学号是否在T_Student表中,如果不存在则取消插入操作表中,如果不存在则取消插入操作,否则显示否则显示“插入操插入操作成功完成作成功完成”。CREATE TRIGGER tri_GradeON T_GradeFOR INSERTAS DECLARE text varchar(50)IF EXISTS(SELECT * FROM inserte

43、d WHERE inserted.StudentCode NOT IN (SELECT StudentCode FROM T_Student) BEGIN SET text=学生的学号不存在,将取消该插入操作学生的学号不存在,将取消该插入操作 RAISERROR(text,16,1) ROLLBACK TRANSACTION ENDElse SET text=插入操作成功完成插入操作成功完成 SELECT text4.6.2 查看、修改和删除触发器查看、修改和删除触发器 1 1)在在企企业业管管理理器器,展展开开“表表”文文件件夹夹,右右击击触触发发器器所所属属的的表表,在在弹弹出出的的快快捷捷菜菜单单上上选选择择“所所有有任任务务/ /管管理理触触发发器器”命命令令,打打开开触触发发器器属属性性对对话话框框。在在名名称称栏栏可可选选择择已建立的触发器。修改方法同创建方法相同。已建立的触发器。修改方法同创建方法相同。2 2)如如要要删删除除,单单击击【删删除除】按按钮钮,在在弹弹出出的的确确认认对对话话框中单击【是】,即删除了所选择的触发器。框中单击【是】,即删除了所选择的触发器。

展开阅读全文
相关资源
正为您匹配相似的精品文档
相关搜索

最新文档


当前位置:首页 > 高等教育 > 研究生课件

电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号