位置: 编程技术 - 正文

SQL SERVER中各类触发器的完整语法及参数说明(sqlserver 类型)

编辑:rootadmin

语法:

Trigger on an INSERT, UPDATE, or DELETE statement to a table or view (DML Trigger)CREATE TRIGGER [ schema_name . ]trigger_name ON { table | view } [ WITH <dml_trigger_option> [ ,...n ] ]{ FOR | AFTER | INSTEAD OF } { [ INSERT ] [ , ] [ UPDATE ] [ , ] [ DELETE ] } [ WITH APPEND ] [ NOT FOR REPLICATION ] AS { sql_statement [ ; ] [ ,...n ] | EXTERNAL NAME <method specifier [ ; ] > }<dml_trigger_option> ::= [ ENCRYPTION ] [ EXECUTE AS Clause ]<method_specifier> ::= assembly_name.class_name.method_nameTrigger on a CREATE, ALTER, DROP, GRANT, DENY, REVOKE, or UPDATE STATISTICS statement (DDL Trigger)CREATE TRIGGER trigger_name ON { ALL SERVER | DATABASE } [ WITH <ddl_trigger_option> [ ,...n ] ]{ FOR | AFTER } { event_type | event_group } [ ,...n ]AS { sql_statement [ ; ] [ ,...n ] | EXTERNAL NAME < method specifier > [ ; ] }<ddl_trigger_option> ::= [ ENCRYPTION ] [ EXECUTE AS Clause ]<method_specifier> ::= assembly_name.class_name.method_nameTrigger on a LOGON event (Logon Trigger)CREATE TRIGGER trigger_name ON ALL SERVER [ WITH <logon_trigger_option> [ ,...n ] ]{ FOR| AFTER } LOGON AS { sql_statement [ ; ] [ ,...n ] | EXTERNAL NAME < method specifier > [ ; ] }<logon_trigger_option> ::= [ ENCRYPTION ] [ EXECUTE AS Clause ]<method_specifier> ::= assembly_name.class_name.method_name

参数:

schema_name

DML 触发器所属架构的名称。DML 触发器的作用域是为其创建该触发器的表或视图的架构。对于 DDL 或登录触发器,无法指定 schema_name。

trigger_name

触发器的名称。trigger_name 必须遵循 标识符规则,但 trigger_name 不能以 # 或 ## 开头。

table | view

对其执行 DML 触发器的表或视图,有时称为触发器表或触发器视图。可以根据需要指定表或视图的完全限定名称。视图只能被 INSTEAD OF 触发器引用。不能对局部或全局临时表定义 DML 触发器。

DATABASE

将 DDL 触发器的作用域应用于当前数据库。如果指定了此参数,则只要当前数据库中出现 event_type或 event_group,就会激发该触发器。

ALL SERVER

将 DDL 或登录触发器的作用域应用于当前服务器。如果指定了此参数,则只要当前服务器中的任何位置上出现 event_type 或 event_group,就会激发该触发器。

WITH ENCRYPTION

对 CREATE TRIGGER 语句的文本进行模糊处理。使用 WITH ENCRYPTION 可以防止将触发器作为 SQL Server 复制的一部分进行发布。不能为 CLR 触发器指定 WITH ENCRYPTION。

EXECUTE AS

指定用于执行该触发器的安全上下文。允许您控制 SQL Server 实例用于验证被触发器引用的任意数据库对象的权限的用户帐户。

FOR | AFTER

AFTER 指定 DML 触发器仅在触发 SQL 语句中指定的所有操作都已成功执行时才被触发。所有的引用级联操作和约束检查也必须在激发此触发器之前成功完成。

如果仅指定 FOR 关键字,则 AFTER 为默认值。

不能对视图定义 AFTER 触发器。

INSTEAD OF

指定执行 DML 触发器而不是触发 SQL 语句,因此,其优先级高于触发语句的操作。不能为 DDL 或登录触发器指定 INSTEAD OF。

对于表或视图,每个 INSERT、UPDATE 或 DELETE 语句最多可定义一个 INSTEAD OF 触发器。但是,可以为具有自己的 INSTEAD OF 触发器的多个视图定义视图。

INSTEAD OF 触发器不可以用于使用 WITH CHECK OPTION 的可更新视图。如果将 INSTEAD OF 触发器添加到指定了 WITH CHECK OPTION 的可更新视图中,则 SQL Server 将引发错误。用户须用 ALTER VIEW 删除该选项后才能定义 INSTEAD OF 触发器。

{ [DELETE] [,] [INSERT] [,] [UPDATE] }

指定数据修改语句,这些语句可在 DML 触发器对此表或视图进行尝试时激活该触发器。必须至少指定一个选项。在触发器定义中允许使用上述选项的任意顺序组合。

对于 INSTEAD OF 触发器,不允许对具有指定级联操作 ON DELETE 的引用关系的表使用 DELETE 选项。同样,也不允许对具有指定级联操作 ON UPDATE 的引用关系的表使用 UPDATE 选项。

event_type

执行之后将导致激发 DDL 触发器的 Transact-SQL 语言事件的名称。DDL 事件中列出了 DDL 触发器的有效事件。

event_group

预定义的 Transact-SQL 语言事件分组的名称。执行任何属于 event_group 的 Transact-SQL 语言事件之后,都将激发 DDL 触发器。DDL 事件组中列出了 DDL 触发器的有效事件组。

CREATE TRIGGER 运行完毕之后,event_group 还可通过将其涵盖的事件类型添加到sys.trigger_events 目录视图中来作为宏使用。

WITH APPEND

指定应该再添加一个现有类型的触发器。仅当兼容级别等于或低于 时,才需要使用此可选子句。如果兼容级别等于或高于 ,则不需要使用 WITH APPEND 子句来添加现有类型的其他触发器。这是兼容级别设置等于或高于 的 CREATE TRIGGER 的默认行为。WITH APPEND 不能与 INSTEAD OF 触发器一起使用。如果显式声明了 AFTER 触发器,则也不能使用该子句。仅当为了向后兼容而指定了 FOR 时(但没有 INSTEAD OF 或 AFTER)时,才能使用 WITH APPEND。如果指定了 EXTERNAL NAME(即触发器为 CLR 触发器),则不能指定 WITH APPEND。

NOT FOR REPLICATION

指示当复制代理修改涉及到触发器的表时,不应执行触发器。有关详细信息,请参阅使用 NOT FOR REPLICATION 来控制约束、标识和触发器。

sql_statement

触发条件和操作。触发器条件指定其他标准,用于确定尝试的 DML、DDL 或 logon 事件是否导致执行触发器操作。

尝试上述操作时,将执行 Transact-SQL 语句中指定的触发器操作。

触发器可以包含任意数量和种类的 Transact-SQL 语句,但也有例外。触发器的用途是根据数据修改或定义语句来检查或更改数据;它不应向用户返回数据。触发器中的 Transact-SQL 语句常常包含控制流语言。

DML 触发器使用 deleted 和 inserted 逻辑(概念)表。它们在结构上类似于定义了触发器的表,即对其尝试执行了用户操作的表。在 deleted 和 inserted 表保存了可能会被用户更改的行的旧值或新值。例如,若要检索 deleted 表中的所有值,则使用:

SELECT *FROM deleted

DDL 和登录触发器通过使用 EVENTDATA (Transact-SQL) 函数来获取有关触发事件的信息。

DELETE、INSERT 或 UPDATE 触发器中,如果兼容级别设置为 ,则 SQL Server 不允许在 inserted和 deleted 表中存在 text、ntext 或 image 列引用。不能访问 inserted 和 deleted 表中的text、ntext 和 image 值。若要在 INSERT 或 UPDATE 触发器中检索新值,请将 inserted 表与原始更新表联接。如果兼容级别等于或低于 ,则将为 inserted 或 deleted 的文本、ntext 或者允许 Null 值的 image 列返回 Null 值;如果列不能为 Null,则返回零长度的字符串。

如果兼容级别等于或高于 ,SQL Server 将允许通过表或视图的 INSTEAD OF 触发器来更新text、ntext 或 image 列。

< method_specifier>

对于 CLR 触发器,指定程序集与触发器绑定的方法。该方法不能带有任何参数,并且必须返回空值。class_name 必须是有效的 SQL Server 标识符,并且该类必须存在于可见程序集中。如果该类有一个使用“.”来分隔命名空间部分的命名空间限定名称,则类名必须用 [] 或“ ”分隔符分隔。该类不能为嵌套类。

推荐整理分享SQL SERVER中各类触发器的完整语法及参数说明(sqlserver 类型),希望有所帮助,仅作参考,欢迎阅读内容。

SQL SERVER中各类触发器的完整语法及参数说明(sqlserver 类型)

文章相关热门搜索词:sql server的数据类型分为哪两类,sql server相关知识,sql server里面的go,sql server常用,sql server常用,sql server分为哪两类,sqlserver常用数据类型,sql server的数据类型分为哪两类,内容如对您有帮助,希望把文章链接给更多的朋友!

MSSQL中删除用户时数据库主体在该数据库存中拥有架构 无法删除的解决方法 在mssql下面删除一个数据库的用户的时候提示"数据库主体在该数据库中拥有架构,无法删除"的错误解决方案1、在安全性-架构下面看有没有该用户存

sqlServer 数据库语法大全 --数据操作SELECT--从数据库表中检索数据行和列INSERT--向数据库表添加新数据行DELETE--从数据库表中删除数据行UPDATE--更新数据库表中的数据--数据定义CREAT

MSSQL监控数据库的DDL操作(创建,修改,删除存储过程,创建,修改,删除表等) 前言:有时候,一个数据库有多个帐号,包括数据库管理员,开发人员,运维支撑人员等,可能有很多帐号都有比较大的权限,例如DDL操作权限(创建,

标签: sqlserver 类型

本文链接地址:https://www.jiuchutong.com/biancheng/347170.html 转载请保留说明!

上一篇:sqlSQL数据库怎么批量为存储过程/函数授权呢?(sql数据库怎么执行命令)

下一篇:MSSQL中删除用户时数据库主体在该数据库存中拥有架构 无法删除的解决方法(删除用户mysql)

  • 个体工商户缴纳税目
  • 事业单位长期股权投资持有期间被投资单位
  • 普通发票的金额包含增值税吗
  • 个体工商户单位性质怎么填
  • 金蝶余额调节表怎么看当月的
  • 为什么社保账户有钱但是卡里没钱
  • 财税公告2019年第74号
  • 国有企业改制资产评估增值税收规
  • 资产负债表存货项目期末余额怎么算
  • 农产品流通环节有哪些
  • 电子发票和纸质发票额度算在一起吗
  • 小规模购买金税盘可以全额抵扣吗
  • 外贸企业人民币结算
  • 以前年度已交增值税额
  • 企业年金的个人账户怎么查
  • 北京市取暖标准
  • 6%税率的项目(不含金融商品转让)免税么
  • 暖气冷气热水的增值税适用税率是多少?
  • 不征税的政府补助如何开票
  • 契税和印花税入哪个科目
  • 增值税核算应设置的会计科目排序
  • 给单位员工报销电话费怎么做账务处理
  • 个人转让股权的合理费用都有哪些
  • win10双屏怎么切换屏幕
  • mac死机什么原因
  • 出售无形资产是什么科目
  • 怎么检查windows版本
  • 企业职工教育经费
  • php日期时间运算汇总
  • 马齿苋的功效与作用的功能与主治与用量
  • 苹果手机系统升级后电量消耗快
  • 办理劳务资质流程
  • loadprofiles什么意思
  • 现金盘盈后的财务分析
  • 手机忘记密码怎么解开锁华为
  • 回顾2021年作文
  • 记一次调试YOLOv5+DeepSort车辆跟踪项目的经过
  • vue要掌握哪些知识?
  • 流动比率取值是取期末
  • phpcms v9用户手册
  • 发票收款人与复核人为空
  • 未抵扣增值税需结转吗
  • 补充医疗保险属于什么
  • 小规模企业出售汽车如何交税
  • 会计中报销费用是什么会计科目
  • mysql四种常见日志
  • 税款所属期止
  • 普通发票销货清单
  • 个体工商户可以抵扣进项吗
  • 长期股权投资会计准则2021修订
  • 企业合并发生的法律服务费影响利润总额吗
  • 长期借款利息如何计算
  • 不得从销项税额中抵扣的进项税额,不得计提加计抵减额
  • 应交增值税减免税款是什么意思
  • 本月留抵增值税
  • 制造企业费用会计
  • 车间成本核算表
  • 怎么用sql脚本创建数据库
  • 删除表s
  • openeuler操作系统安装方法
  • mac安装mysql详细教程
  • task运行在哪个工作单元
  • win10系统如何删除账户
  • 桌面美化助手
  • cocos2dx在不同安卓机型下scrollview裁剪失败
  • cocos2d开发的知名游戏
  • 记住密码自动登录 会更新登陆信息吗
  • Shell正则表达式获取指定字符串
  • python中的文件读写
  • perl中use strict
  • OpenGL super bible(5th) 学习笔记 -- 像素缓冲区对象(PBO)
  • arp如何绑定
  • JAVASCRIPT IE 与 FF 中兼容写法记录
  • linux sed awk区别
  • 广东电子税务局报税操作流程视频
  • 工匠称号有什么待遇?
  • 外经证可以不交企业所得税吗
  • 从价计征和从租计征的区别,有什么优缺点
  • 深圳个体户不注销的后果
  • 金三系统企业所得税如何变更所得税缴纳方式?
  • 免责声明:网站部分图片文字素材来源于网络,如有侵权,请及时告知,我们会第一时间删除,谢谢! 邮箱:opceo@qq.com

    鄂ICP备2023003026号

    网站地图: 企业信息 工商信息 财税知识 网络常识 编程技术

    友情链接: 武汉网站建设