您好,欢迎访问三七文档
当前位置:首页 > IT计算机/网络 > 数据库 > JDBC实验四触发器的应用
1广州中医药大学信息技术学院实验报告课程名称:网络数据库编程专业班级:计算机科学与技术(08)级学生学号:2008081042学生姓名:王湛泽实验名称:触发器的应用实验成绩:课程类别:必修□限选公选□其它□2实验四触发器的应用实验类型:应用性实验实验日期:2011-4-13[实验目的]1.熟悉Transact_sql数据库程序设计2.熟悉触发器的设计及应用[实验内容与要求]将1-5题的结果文件以题目命名,如题1,题2.题3,题4。题5,放在自己的文件夹中。1.利用SQL语句建立一个数据表STUDENT_INFO,其中包括以下字段:SnoINTNOTNULL,SnameCHAR(10)NOTNULL,SexCHAR(2),TelephoneCHAR(16),Deptnochar(8)NOTNULL,SCOREINT建立一个数据表DEPT_INFO,其中包括以下字段:DEPTNOchar(8)NOTNULLPRIMARYKEY,DEPTNAMECHAR(20),DEPTADMINCHAR(16)CREATETABLE[dbo].[STUDENT_INFO]([Sno][int]NOTNULL,[Sname][char](10)NOTNULL,[Sex][char](2)NULL,[Telephone][char](16)NULL,[Deptno][char](8)NOTNULL,[SCORE][int]NULL)GOCREATETABLE[dbo].[DEPT_INFO]([DEPTNO][char](8)NOTNULL,[DEPTNAME][char](20)NULL,[DEPTADMIN][char](16)NULL,CONSTRAINT[PK_DEPT_INFO]PRIMARYKEYCLUSTERED([DEPTNO]3)ON[PRIMARY])GO2.在表STUDENT_INFO中创建一个触发器,将成绩(SCORE)限制在0-100之间。注意:CREATETRIGGER要在单个批处理中执行CREATETRIGGERIN_STUONSTUDENT_INFOFORINSERTASBEGINDECLARE@XINTSELECT@X=SCOREFROMINSERTEDIF(@X0OR@X100)BEGINROLLBACKTRANSACTIONPRINT('成绩(SCORE)限制在0-100之间')ENDEND3.使用JDBC对数据库的事务操作及触发器2种方法实现以下功能。建立两个表:CreateTableStudent(--学生表StudentIDintprimarykey,--学号)CreateTableBorrowRecord(--学生借书记录表BorrowRecordintidentity(1,1),--流水号StudentIDint,--学号BorrowDatedatetime,--借出时间ReturnDAteDatetime,--归还时间)要求实验的功能有:(1)如果更改了学生的学号,希望他的借书记录仍然与这个学生相关(也就是同时更改借书记录表的学号);4CREATETRIGGERUP_StudentONStudentFORUPDATEASIFUPDATE(StudentID)BEGINUPDATEBorrowRecordSETStudentID=I.StudentIDFROMBorrowRecordB,DELETEDD,INSERTEDIWHEREB.StudentID=D.StudentIDEND(2)如果该学生已经毕业,希望删除他的学号的同时,也删除它的借书记录。CREATETRIGGERDEL_StudentONStudentFORDELETEASDELETEBorrowRecordFROMBorrowRecordB,DELETEDDWHEREB.StudentID=D.StudentID4.验证讲稿中后面2张幻灯片练习1。(以下为理论知识题)6、在SQLSERVER中如何获取当前日期和时间?getdate()7、设置在1小时后查询表SALARY。BEGINWAITFORDELAY'1:00:00'SELECT*FROMSALARYEND8、什么是触发器,有什么优点?触发器是一种特殊类型的存储过程,当使用下面的一种或多种数据修改操作在指定表中对数据进行修改时,触发器会生效:UPDATE、INSERT或DELETE。触发器可以查询其它表,而且可以包含复杂的SQL语句。它们主要用于强制复杂的业务规则或要求。触发器可通过数据库中的相关表实现级联更改;不过,通过级联引用完整性约束可以更有效地执行这些更改。触发器可以强制比用CHECK约束定义的约束更为复杂的约束。与CHECK约束不同,触发器可以引用其它表中的列。例如,触发器可以使用5另一个表中的SELECT比较插入或更新的数据,以及执行其它操作,如修改数据或显示用户定义错误信息。触发器也可以评估数据修改前后的表状态,并根据其差异采取对策。一个表中的多个同类触发器(INSERT、UPDATE或DELETE)允许采取多个不同的对策以响应同一个修改语句。触发器还有助于强制引用完整性,以便在添加、更新或删除表中的行时保留表之间已定义的关系。然而,强制引用完整性的最好方法是在相关表中定义主键和外键约束。如果使用数据库关系图,则可以在表之间创建关系以自动创建外键约束。触发器的优点如下:触发器是自动的:它们在对表的数据作了任何修改(比如手工输入或者应用程序采取的操作)之后立即被激活。触发器可以通过数据库中的相关表进行层叠更改。触发器可以强制限制,这些限制比用CHECK约束所定义的更复杂。与CHECK约束不同的是,触发器可以引用其它表中的列。9、触发器有哪三种类型,并简述触发器的原理。常见的触发器有三种:分别应用于Insert,Update,Delete事件。触发器是一种特殊的存储过程,它不能被显式地调用,而是在往表中插入记录、更改记录或者删除记录时,当事件发生时,才被自动地激活。10、Inserted和deleted表的作用是什么?Deleted与Inserted分别表示触发事件的表“旧的一条记录”和“新的一条记录”。一个数据库系统中有两个虚拟表用于存储在表中记录改动的信息,分别是:虚拟表Inserted,虚拟表Deleted。Inserted表保存insert或update以后更新的内容Deleted表保存delete或update前更新的内容11、分别写出如何用系统存储过程实现如下操作查看表中的触发器select*fromsysobjectswherextype='TR'查看触发器的定义文本execsp_helptext'触发器名称'查看触发器的所有者和创建日期execsp_help'触发器名称'查看触发器的相关依赖性sp_depends触发器名称6[实验体会]请在下方写出你对本实验的看法,例如你认为实验难度如何?你能够独立实验吗?如果不能,你认为原因是什么?1、实验难度:难()中等()容易()2、能否按指定要求,在指定时间内完成所有实验?能()否()如果不能,不能完成实验有(作业提交说明:实验完成后,将此文档和相关的文件一并压缩后提交上来,文件名为自己的学号+实验四,如2001000001+实验四.RAR)
本文标题:JDBC实验四触发器的应用
链接地址:https://www.777doc.com/doc-2879242 .html