资源描述:
《使用触发器设计》由会员上传分享,免费在线阅读,更多相关内容在工程资料-天天文库。
1、使用触发器设计1、DDL触发器设计(2005中新增加的功能)EXP1:禁止执行DLL语句。USEJXGLGO~如果存在同名的触发器,则删除之IFEXISTS(SELECTNAMEFROMSYSOBJECTSWHERETYPE二'TR'ANDNAME=5STOP_DDL_on_Table_and_PROCJ)DROPTRIGGERSTOP_DDL_on_Tab1e_and_PROCGOCREATETRIGGERSTOP_DDL_on_Tab1e_and_PROCONDATABASE--对数据库禁止执行对应的语句FORCRE
2、ATE_TABLE,DROP_TABLE,ALTER_TABLE,CREATE_PROCEDURE,ALTER_PROCEDURE,DROP_PKOCEDUREASSELECTEVENTDATAO.value('(/EVENT_INSTANCE/TSQLCommand/CommandText)[1J,,'nvarchar(max)')PRINT'YouarenotallowedtoCREATE,ALTERandDROPanyTablesandProcedures'ROLLBACKGOALTERTABLEXSADDXINT
3、—验证GODISABLETRIGGERSTOP_DDL_ON_TABLE_AND_PROCONDATABASE--关掉这个触发器GO一对整个服务器采収策略的话,也是很简单的,和上面的方法大致相同只不过将ondatabase的参数改为onserverCREATETRIGGERSTOP_DDL_on_Tab1e_and_PROCONALLSERVERFORCREATE_DATABASE,ALTER_DATABASE,DROP_DATABASEASPRINT'YouarenotallowedtoCREATE,ALTERandD
4、ROPanyDatabases1ROLLBACK2、如何利用触发器实现两个数据库间的同步EXP2:实现了为当前数据库JXGL中表xs创建触发器当插入数据时,同步向JXGL_BAK数据库表DBO.xsl插入数据,从而达到同步插入。CREATEDATABASEJXGL_BAKGOSELECTXS.*INTOJXGL_BAK..XSlFROMJXGL..XSGOUSEJXGLGOSETANSI_NULLSONSETQUOTED_IDENTIFIERONGOAUTHOR:江国粹CREATEDATE:2012-6-1DESCRIP
5、TION:~如果存在同名的触发器,则删除之IFEXISTS(SELECTNAMEFROMSYSOBjECTSWHERETYPE二'TR'ANDNAME二'TRIGGER_ADD_xs')DROPTRIGGERTRIGGER_ADD_xsGOCREATETRIGGER[TRIGGER_ADI)_xs]ON[DBO].[xs]AFTERINSERTASBEGIN―SETNOCOUNTONADDEDTOPREVENTEXTRARESULTSETSFROM―INTERFERINGWITHSELECTSTATEMENTS.SETN
6、OCOUNTONINSERTJXGL_BAK.DBO.xsl(XH,XM,XB,CSRQ,BJH)SELECTXH,XM,XB,CSRQ,BJHFROMINSERTEDENDGO一以下验证INSERTINTOXSVALUES('090101','陈军',1,'1992-6-4',8)SELECT*FROMXSWHEREXM二'陈军'SELECT*FROMJXGL_BAK..XS1WHEREXM二'陈军'―启示:类同,可将INSERT语句改为UPDATE,DELETEo—高级应用:若两个库处于不同的数据库服务器则应先进行以
7、下操作:在SERVER1上创建连接服务器,以便在SERVER1中操作SERVER2,实现同步EXECSP_ADDLINKEDSERVER'SERVER2''SQLOLEDB','SERVER2的数据库实例名或IP'EXECSP.ADDLINKEDSRVLOGIN'SERVER2,,'FALSE',NULL,'用户名’,’密码'GO3、如何利用触发器实现两个表间的级联删除与更新操作EXP3:实现两个功能:一是如果学生中学号更改,则要求相关表CJ中的学号也一起更改;二是如果有学生已经毕业,我希望删除他的学号的同时,也删除它的
8、所有记录。CREATETRIGGERTRI_XSONXS一在XS表中创建触发器FORUPDATE--为什么事件触发AS―事件触发后所要做的事情IFUPDATE(XII)BEGINUPDATECJSETXHCXHFROMCJA,DELETEDB,INSERTEDC—DELETED和INSERTED临时表WHEREA.X