仓酷云

 找回密码
 立即注册
搜索
热搜: 活动 交友 discuz
查看: 798|回复: 8
打印 上一主题 下一主题

[学习教程] MSSQL编程:在SQLSERVER企业办理器中怎样创立触发器...

[复制链接]
莫相离 该用户已被删除
跳转到指定楼层
楼主
发表于 2015-1-16 22:23:44 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式

马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。

您需要 登录 才可以下载或查看,没有帐号?立即注册

x
MyISAMMysql的默认数据库,最为常用。拥有较高的插入,查询速度,但不支持事务server|sqlserver|触发器|创立
上面将分离先容在MSSQLServer中怎样用SQLServer办理工具EnterpriseManager和Transaction_SQL来创立触发器。
在创立触发器之前必需思索到以下几个方面:
CREATETRIGGER语句必需是批处置的第一个语句;
表的一切者具有创立触发器的缺省权限,表的一切者不克不及把该权限传给别的用户;
触发器是数据库工具,以是其定名必需切合定名划定规矩;
只管在触发器的SQL语句中能够参照别的数据库中的工具,可是,触发器只能创立在以后数据库中;
固然触发器能够参照视图或一时表,但不克不及在视图或一时表上创立触发器,而只能在基表或在创立视图的表上创立触发器;
一个触发器只能对应一个表,这是由触发器的机制决意的;
只管TRUNCATETABLE语句好像没有WHERE从句的DELETE语句,可是因为TRUNCATETABLE语句没有被记进日记,以是该语句不克不及触发DELETE型触发器;
WRITETEXT语句不克不及触发INSERT或UPDATE型的触发器。
当创立一个触发器时,必需指定触发器的名字,在哪个表上界说触发器,激活触发器的修正语句,如INSERT、DELETE、UPDATE。固然两个或三个分歧的修正语句也可以都触发统一个触发器,如INSERT和UPDATE语句都能激活统一个触发器。
用办理工具EnterpriseManger创立触发器
其操纵步骤以下:
启动EnterpriseManger,登录到指定的服务器上。
睁开数据库,然后睁开要在其上创立触发器的表地点的数据库,然后单击该表。
右击鼠标,在弹出菜单当选择ALLTasks,然后单击ManageTriggers…。
在名字框当选择new,在文本框中输出触发器文本,如2-5所示。
单击CheckSyntax反省语句是不是准确。
单击Apply,在Name下拉列表中会有新创立的触发器名字。
单击OK,封闭窗口创立乐成。

用CREATETRIGGER命令创立触发器
各参数的申明以下:
trigger_name
是用户要创立的触发器的名字触发器的名字,必需切合MSSQLServer的定名划定规矩,且其名字在以后数据库中必需是唯一的。
Table
是与用户创立的触发器相干联的表的名字,而且该表已存在。
WITHENCRYPTION
暗示对包括有CREATETRIGGER文本的syscomments表举行加密。
AFTER
暗示只要在实行了指定的操纵(INSERT、DELETE、UPDATE)以后触发器才被激活,实行触发器中的SQL语句。若利用关头字FOR,则暗示为AFTER触发器,且该范例触发器仅能在表上创立。
INSTEADOF
请参看“12.8INSTEADOF触发器”
[DELETE][,][INSERT][,][UPDATE]
关头字用来指明哪一种数据操纵将激活触发器。最少要指明一个选项,在触发器的界说中三者的按次不受限定,且各选项要用逗号离隔。
WITHAPPEND
标明增添别的一个已存在某一范例触发器。只要在兼容性程度(指某一数据库举动与之前版本的MSSQLServer兼容水平)不年夜于65时才利用该选项。
NOTFORREPLICATION
标明当复制处置修正与触发器相干联的表时,触发器不克不及被实行。
AS
是触发器将要实行的举措。
Sql_statement
是包括在触发器中的前提语句或处置语句。触发器的前提语句界说了别的的尺度来决意将被实行的INSERT、DELETE、UPDATE语句是不是激活触发器。
IFUPDATE(column)
用来测定对某一断定列是拔出操纵仍是更新操纵,但不与删除操纵用在一同。
IF(COLUMNS_UPDATED())
仅在INSERT和UPDATE范例的触发器中利用,用其来反省所触及的列是被更新仍是被拔出。
Bitwise_operatorj
是在对照中利用的位逻辑运算符。
Pdated_bitmask
是那些被更新或拔出的列的整形位掩码。比方,假如表T包含C1,C2,C3,C4,C5五列。为了断定是不是只要C2列被修正,可用2来做位掩码,假如想断定是不是C1,C2,C3,C4都被修正,可用14来做位掩码。
Comparison_operator
是一对照操纵符用“=”暗示反省在updated_bitmask中界说的一切列是不是都被更新,用“>”暗示反省是不是在updated_bitmask中界说的某些列被更新。
Column_bitmask


对于insert和delete,event中包含了插入/删除的记录的所有字段的值(太爽了。。)
小魔女 该用户已被删除
沙发
发表于 2015-1-19 10:29:42 来自手机 | 只看该作者
Mirror可以算是SQLServer的Dataguard了。但是能不能被大伙用起来就不知道了。
山那边是海 该用户已被删除
板凳
发表于 2015-1-24 23:40:15 | 只看该作者
是要和操作系统进行Socket通讯的场景。否则建议慎重!
admin 该用户已被删除
地板
发表于 2015-2-2 15:10:31 | 只看该作者
多走走一此相关论坛,多看一些实例开发,多交流0经验,没什么的,我也是刚学没多久!加油
再现理想 该用户已被删除
5#
发表于 2015-2-7 23:42:46 | 只看该作者
现在是在考虑:如果写到服务器端,我一下搞他个10个存储过程导过去,那久之服务器不就成垃圾箱了吗?即便优化了我的中间层.
因胸联盟 该用户已被删除
6#
发表于 2015-2-23 18:50:55 | 只看该作者
以前的DTS轻盈简单。但是现在的SSIS虽然功能强大了很多,但是总是让人感觉太麻烦。看看论坛中询问SSIS的贴子就知道。做的功能太强大了,往往会有很多用户不会用了
兰色精灵 该用户已被删除
7#
发表于 2015-3-7 09:59:50 | 只看该作者
而SQLServer如果能像Oracle一样可以为登陆分配如:5%的cpu,10%的内存。就可以解决这个漏洞。
冷月葬花魂 该用户已被删除
8#
发表于 2015-3-14 20:04:28 | 只看该作者
始终遗憾SQLServer的登陆无法分配CPU/内存占用等指标数。如果你的SQLServer给别人分配了一个只可以读几个表的权限,而这个家伙疯狂的死循环进行连接查询,会给你的系统带来很大的负担。
爱飞 该用户已被删除
9#
发表于 2015-3-21 14:37:21 | 只看该作者
原来的计算字段其实和虚拟字段很像。只是管理方面好了而已,性能方面提高不多。但是SQL2005提供了计算字段的持久化,这就提高了查询的性能,但是会加重insert和update的负担。OLTP慎用。OLAP可以大规模使用。
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

QQ|Archiver|手机版|仓酷云 鄂ICP备14007578号-2

GMT+8, 2025-1-10 06:09

Powered by Discuz! X3.2

© 2001-2013 Comsenz Inc.

快速回复 返回顶部 返回列表