INSTEAD OF 触发器

关于 INSTEAD OF 触发器 <br />快生三星了,好歹也得在优快云上留点什么以示水平不低吧,但总是不知道该写什么,只善于回答问题,不善于总结问题。<br />近来在坛子上经常看到有问触发器的,而且大多是要求实现在一定条件下不向表中进行操作的触发器,可大多数都不知道该用 INSTEAD OF 触发器。<br /> <br />实现在一定条件下不向表中进行操作的触发器也可以用 AFTER | FOR 触发器,方法是对系统临时表 inserted 表或者 deleted 表进行检查,发现不能操作的,便用 ROLLBACK 对表进行回滚。 阅读详情

 INSTEAD OF 触发器用来代替通常的触发动作,即当对表进行INSERT、UPDATE 或 DELETE 操作时,系统不是直接对表执行这些操作,而是把操作内容交给触发器,让触发器检查所进行的操作是否正确。如正确才进行相应的操作。因此,INSTEAD OF 触发器的动作要早于表的约束处理。
INSTEAD OF 触发器的操作有点类似于完整性约束。在对数据库的操纵时,有些情况下使用约束可以达到更好的效果,而如果采用触发器,则能定义比完整性约束更加复杂的约束。有关触发器与约束的比较,请参见联机丛书。
INSTEAD OF 触发器不仅可在表上定义,还可在带有一个或多个基表的视图上定义,但在作为级联引用完整性约束目标的表上限制应用。
AFTER 触发器定义了对表执行了 INSERT、UPDATE 或 DELETE 语句操作之后再执行的操作。比如对某个表中的数据进行了更新操作后,要求立即对相关的表进行指定的操作,这时就可以采用 AFTER 触发器。AFTER 触发器只能在表上指定,且动作晚于约束处理。
每一个表上只能创建一个 INSTEAD OF 触发器,但可以创建多个 AFTER 触发器。
实例:
INSTEAD OF 触发器:
向表“计0261”插入数据时,检查学号是否存在于表“计026”中,如存在则进行插入操作,否则就不插入。

SQL code
CREATE TRIGGER [checkid] ON [dbo].[计0261] 
INSTEAD OF insert
AS
IF NOT EXISTS(SELECT * FROM 计026 WHERE 学号=(SELECT 学号 FROM INSERTED))
  BEGIN
    ROLLBACK TRANSACTION
    PRINT '要处理记录的学号不存在!'
  END
ELSE
  BEGIN
    INSERT INTO 计0261 select * from inserted
    PRINT '已经成功处理记录!'
  END


AFTER 触发器:
对订货表设置 AFTER(FOR) 类型的 INSERT 触发器,用来在插入记录时自动将统计值计算到订货统计表中。

SQL code
CREATE TRIGGER [orderinsert] ON [dbo].[订货表]
AFTER INSERT
AS
DECLARE @bookid int, @ordernum int, @num int
SELECT @bookid = 书籍编号, @ordernum = 数量 FROM INSERTED
SELECT @num = count(书籍编号) FROM 订货统计表 WHERE 书籍编号=@bookid
IF @num = 0
  --未找到该书,插入记录
  INSERT INTO 订货统计表 VALUES(@bookid, @ordernum)
ELSE
  --找到该书,更新记录
  UPDATE 订货统计表
6.SQL Server DML触发器--INSTEAD OF触发器 本文摘自《锋利的SQL》:http://item.jd.com/10380652.html 在前面讨论的一直都是AFTER触发器。INSTEAD OF在处理约束前激发,可以在INSTEAD OF中使用其他语句来替代激发触发器的INSERT、UPDATE等语句。 可以为表或视图定义INSTEADOF触发器,但是,INSTEADOF触发器的主要优点是可以使不能更新的视图支持更新 阅读详情

相关推荐

SQL : INSTEAD OF触发器的工作过程

可以在表或视图上指定INSTEAD OF触发器。执行这种触发器就能够替代原始的触发动作。INSTEAD OF触发器扩展了视图更新的类型。对于每一种触发动作(INSERT、UPDATE或 DELETE),每一个表或视图只能有一个INSTEAD OF触发器。 INSTEAD OF触发器被用于更新那些没有办法通过正常方式更新的视图。例如,通常不能在一个基于连接的视图上进行DELETE操作。然而,可以编写...

weixin_44523387的博客 2766

AFTER触发器与INSTEAD OF触发器的区别

INSTEAD OF 触发器用来代替通常的触发动作,即当对表进行INSERT、UPDATE 或 DELETE 操作时,系统不是直接对表执行这些操作,而是把操作内容交给触发器,让触发器检查所进行的操作是否正确。如正确才进行相应的操作。因此,INSTEAD OF 触发器的动作要早于表的约束处理。 INSTEAD OF 触发器的操作有点类似于完整性约束。在对数据库的操纵时,有些情况下使用约束可以达到更好...

weixin_30383279的博客 254

Electron多窗口开发避坑指南:Pinia状态同步的3种解决方案对比

本文深入探讨了在Electron多窗口应用中实现Pinia状态同步的三种核心方案。针对Electron多窗口架构下状态隔离的挑战,文章对比了基础事件通信、共享存储以及智能Pinia插件等方案的优劣与适用场景,并提供了生产级的实现指南与选型建议,帮助开发者构建健壮高效的桌面应用。

spice的博客 479

数据库触发器总结

1:instead of触发器和before/after触发器区别 当你往表插入数据时,若使用after/before insert触发器,只要不出错,最终都会把数据插入到表中。 若使用 INSTEAD OF INSERT 触发器,数据并不会插入表,它只是触发一个操作。当然,这个操作内你也可以把触发数据插入到表中。 ‘代替’,就是不再执行被代替的语句,而是执行触发器里的语句...

a3060858469的博客 1324

Vivado实战:从零封装AXI-Lite接口的呼吸灯IP核

本文提供了一份详细的Vivado实战指南,手把手教你如何将Verilog编写的呼吸灯模块封装成带AXI-Lite接口的IP核。内容涵盖从创建IP框架、编写核心逻辑、连接AXI总线到在ZYNQ系统中调用并编写C程序进行软硬件协同测试的完整流程,是掌握FPGA软硬件协同设计的关键实践。

weixin_29233333的博客 597

ADS仿真功率放大器实例学习笔记

ADS仿真功率放大器实例学习笔记

qq_36521926的博客 1万+

sqlserver触发器详解:sqlserver触发器after/for和instead of的区别详解(实例讲解),触发器定义创建操作打通,触发器的优缺点,触发器使用建议

sqlserver触发器详解(一篇让你打通触发器的文章):sqlserver触发器after/for和instead of的区别详解(实例讲解),触发器定义创建操作打通,触发器的优缺点,触发器使用建议

是谢添啊 1万+

步进电机梯形加减速算法的实现

步进电机梯形加减速算法的实现

m0_69251699的博客 1318

instead of 触发器

instead of 触发器 1用于执行一个替代操作来代替触发事件的操作,最终instead of 触发器的触发事件本身不会被执行,不像DML触发器那样,DML触发事件本身最终会被执行.2instead of 触发器只能针对视图,不是视图所有列都支持。如果对列进行数学运算或函数运算,不能对该列进行DML操作,这时候可以使用instead of 触发器..举例验证测试数据 create tabl

zhou920786312的博客 6546

cadence中利用sva进行FPV实战(可直接使用)

在cadence中使用fpv进行formal验证

youzjuer的博客 749

通信算法之264: DJI O2 协议物理层逆向工程解析

对于 DroneID,标志之间的间隙由循环前缀 (CP) 填充:每个标志末尾的副本附加在相应标志的开头。有了关于确切标志开始的信息,可以使用 FFT 将标志转移到频域 - 来自时域的 1024 个样本导致频域中的 1024 个子载波。使用比特流的解扰和涡轮解码,并将生成的数据映射到如上的DroneID 结构,通过逆向工程在无人机的固件中找到了它。注意到一些无人机(Mavic 2 和更早的 OcuSync 无人机)不发送第一个标志(标志 1),这导致更短的帧持续时间为 576 µs。//产品型号数字代号。

leegang12的专栏 3942

触发器摘录

2019独角兽企业重金招聘Python工程师标准>>> ...

weixin_33889665的博客 294

基于MATLAB的井筒多相流模拟

井筒多相流的模拟可以基于不同的数学模型和计算方法。其中,最常用的模型之一是多相流模型,它基于质量守恒、动量守恒和能量守恒等原理,描述了流体在井筒中的流动行为。对于井筒多相流的模拟和分析可以帮助我们理解和优化油气田开发过程中的流体行为,从而提高产量和效率。在本文中,我们将介绍如何使用MATLAB进行井筒多相流的模拟,并提供相应的源代码。需要注意的是,以上示例是一个简化的模拟,仅用于演示如何使用MATLAB进行井筒多相流模拟。实际应用中,我们需要考虑更多的物理过程和参数,并使用更复杂的数值方法和模型进行模拟。

AtdiHtml的博客 706

instead of触发器

触发器是类似于存储程序的数据库对象,它响应数据库环境下的某个请求。SQL Sever 2005包含3个触发器对象:AFTER,数据定义语言 (DDL)和INSTEAD-OF。 AFTER触发器是存储程序,它发生于数据操作语句作用之后,例如删除语句等。DDL是SQL Server 2005的新触发器,允许响应数据库引擎中对象定义水平事件(例如:DROP TABLE语句)。INSTEAD-OF触发

stone的专栏 1385

PCL基础:getTransformation函数全流程解析与应用实例,一篇文章精通点云变换

在 Eigen 和 PCL 中,getTransformation是一个常用的函数,用于根据输入的平移和旋转信息(如欧拉角或四元数)生成一个仿射变换矩阵(Eigen::Affine3f或 Eigen::Affine3d)。1)在 Eigen 中,可以通过四元数和平移向量构造一个变换矩阵。2)讲解了从四元数转换到欧拉角,或者从欧拉角转换到四元数的方法。

weixin_42896234的博客 1368

IEM模型,地表粗糙度模拟

利用微波反演土壤水分时候,利用IEM模型可以实现对随机地表的模拟

INSTEAD OF 触发器介绍

当对表或可更新视图执行这些操作时,触发器会拦截并替代原始操作,转而执行触发器中定义的自定义逻辑。触发器是 SQL Server 中一种特殊类型的触发器,

a876106354的博客 868

Devexpress16.2.6破解工具

Devexpress16.2.6破解工具Devexpress16.2.6破解工具Devexpress16.2.6破解工具Devexpress16.2.6破解工具

【数据库】INSTEAD OF 触发器 的实现

摘要:本文详细讲解了PostgreSQL中INSTEADOF触发器的实现方法,用于使不可更新的视图支持INSERT操作。首先分析了CurrentTrack视图不可更新的原因(包含复杂子查询和聚合逻辑),然后展示了创建触发器函数insertTrack()的过程,该函数将视图插入操作重定向到基表track。文章重点讨论了设计考虑,包括如何处理time字段默认值、roadID字段的计算逻辑等,并提供了完整的实现示例和测试方法。最后总结了INSTEADOF触发器在简化数据操作接口、保持数据完整性方面的作用。

2301_80025611的博客 938

复分析 阿尔福斯(Ahlfors) 第三版答案 英文

答案分为十章,有部分习题没有答案,全英文复分析阿尔福斯(Ahlfors) 第三版答案

IDEA的使用指南

IDEA基于java的使用手册,可以最快速的上手,在使用中不断的丰富自己的使用技巧.

mysql 触发器 instead of_AFTER触发器与INSTEAD OF触发器

在对表进行操作时,总会产生 INSERTED 和(或)DELETED表,不管这个操作是否已经进行。这里的和/或,要看进行的什么操作,插入,产生 INSERTED 表,删除,产生DELETED表,而update则两个都会产生INSTEAD OF 触发器在本章第五节我们已经指出SQL Server 2000 支持AFTER 和INSTEAD OF 两种类型的触发器。其中INSTEAD OF 触发器是S...

weixin_26837345的博客 1106

Oracle PL / SQL – INSTEAD OF触发器示例

本文向您展示如何使用INSTEAD OF TRIGGER进行更新 非版本视图 非版本视图的嵌套表列 此INSTEAD OF触发器提供了一种修改views的方法,该views无法直接通过DML语句(如INSERT,UPDATE和DELETE)进行修改 INSTEAD OF触发器是 始终是行级触发器。 可以读取旧值和新值,但不能更改它们。 不能是有条件的。 意味着我...

一名可爱的技术搬运工 700

Instead Of Insert触发器

GPS平台、网站建设、软件开发、系统运维,找森大网络科技! https://cnsendnet.taobao.com 来自森大科技官方博客 http://www.cnsendblog.com/index.php/?p=2064 创建和维护数据库 INSTEAD OF INSERT 触发器 可以在视图或表上定义 INSTEAD OF INSERT 触发器来代替 INSERT 语句的标准操作。通常,在视图上定义 INSTEAD OF INSERT 触发器以在一个或多个基表中插入数据。 视图选择列表中的列可为空也

森大科技的博客 1046

触发器(六、instead of触发器实现视图增删改)

场景描述 开发中遇到一个情况:前台页面是一个角色对用户的批量授权,其中用户是多选,多选的结果是控件里会填入逗号分隔的用户ID字符串,比如“TOM,JERRY”,最终要分别插入2张一对多的主从表中。 --主表 CREATE TABLE T_MAIN (GUID VARCHAR2(32) primary key ,GRANTOR VARCHAR2(30) ,ROLEID VARCHA...

观想的专栏 7364

after[for]触发器与instead of 替代触发器的区别

最近在复习sqlserver数据库的触发器时,了解到触发器有两种类型,最开始学的时候只是大致知道其作用,复习的过程中更应该讲究理解,于是找到了一份大神的解释,原文链接:https://bbs.youkuaiyun.com/topics/300074591 以下是正文内容: INSTEADOF触发器用来代替通常的触发动作,即当对表进行INSERT、UPDATE或DELETE操作时,系统不是直接对表...

Leeycw96的博客 2476

oracle 触发器 insert 前检查_一文看懂INSTEAD OF 与AFTER 触发器区别与联系

概述最近在写触发器时碰到一个报错,简单记录如下:报错信息:> [42000] [Microsoft][SQL Server Native Client 10.0][SQL Server]不能在 'inserted' 表和 'deleted' 表中使用 text、ntext 或 image 列。 (311)下面记录下解决的思路和方法,仅供参考。思路不能比较或排序 text、ntext 和 im...

weixin_39807954的博客 634

触发器---FOR INSERT与INSTEAD OF

注:下面的实例由优快云论坛MS-SQL server版块中internetcsdn (公元1979年8月10日) 网友提供测试一.--------------create table tb1 (id int identity(1,1), a varchar(10))create trigger tri_tb1 on tb1 INSTEAD OF  insertas begin insert tb

流落街头(蜗牛) 3597
上一篇: (转)在服务器上安装360安全卫士的“血泪史”
下一篇: 数据库同步(网上资料收藏)
boby16
博客等级 码龄21年 18粉丝 25原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值