有两个用于设计 DML 触发器的选项:
- 执行 INSTEAD OF 触发器代替通常的触发操作。还可以对带有一个或多个基表的视图定义 INSTEAD OF
触发器,这些触发器可以扩展视图可支持的更新类型。
- 在执行 INSERT、UPDATE 或 DELETE 语句操作之后执行 AFTER 触发器。指定 AFTER 与指定 FOR 相同。AFTER
触发器只能在表上指定。
下表对 AFTER 触发器和 INSTEAD OF 触发器的功能进行了比较。
函数 | AFTER 触发器 | INSTEAD OF 触发器 |
---|---|---|
适用范围 |
表 |
表和视图 |
每个表或视图包含触发器的数量 |
每个触发操作(UPDATE、DELETE 和 INSERT)包含多个触发器 |
每个触发操作(UPDATE、DELETE 和 INSERT)包含一个触发器 |
级联引用 |
无任何限制条件 |
不允许在作为级联引用完整性约束目标的表上使用 INSTEAD OF UPDATE 和 DELETE 触发器。 |
执行 |
晚于:
|
早于:
替代:
晚于:
|
执行顺序 |
可指定第一个和最后一个执行 |
不适用 |
插入的和删除的表中的 varchar(max)、nvarchar(max) 和 varbinary(max) 列引用。 |
允许 |
允许 |
插入的和删除的表中的 text、ntext 和 image 列引用。 |
不允许 |
允许 |
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· AI与.NET技术实操系列:基于图像分类模型对图像进行分类
· go语言实现终端里的倒计时
· 如何编写易于单元测试的代码
· 10年+ .NET Coder 心语,封装的思维:从隐藏、稳定开始理解其本质意义
· .NET Core 中如何实现缓存的预热?
· 分享一个免费、快速、无限量使用的满血 DeepSeek R1 模型,支持深度思考和联网搜索!
· 基于 Docker 搭建 FRP 内网穿透开源项目(很简单哒)
· ollama系列01:轻松3步本地部署deepseek,普通电脑可用
· 25岁的心里话
· 按钮权限的设计及实现