instead of 触发器的用法

INSTEAD OF 触发器的主要优点是可以使不能更新的视图支持更新。基于多个基表的视图必须使用

INSTEAD OF 触发器来支持引用多个表中数据的插入、更新和删除操作。INSTEAD OF 触发器的另一个优点是使您得以编写这样的逻辑代码:在允许批处理的其他部分成功的同时拒绝批处理中的某些部分。

Transact-SQL 语句创建两个基表、一个视图和视图上的 INSTEAD OF 触发器。以下表将个人数据和业务数据分开并且是视图的基表。

/*在视图上定义 instead of insert 触发器以在一个或多个基表中插入数据。*/

--部门表

create table dept

(

d_id int primary key,

d_name varchar(20)

)

--员工表

create table emp

(

e_id int primary key,

e_name varchar(20),

d_id int references dept(d_id)

)

select * from emp

drop view v

create view v

as

select e_id,e_name,d.d_id,d_name from emp e,dept d where e.d_id=d.d_id

select * from v

insert into v values(1001,'张珊',101,'销售部')

/*******************使用instead of 触发器******************/

drop trigger de_em_insert

go

create trigger de_em_insert

on v

instead of insert

as

begin

if (not exists (select d.d_id from dept d, inserted i where d.d_id = i.d_id))

insert into dept select d_id,d_name from inserted

if (not exists (select e.d_id from emp e, inserted i where e.d_id = i.d_id))

insert into emp select e_id,e_name,d_id from inserted

else

update emp set e_id = i.e_id,e_name = i.e_name from emp e, inserted i where e.d_id = i.d_id

end

可以在视图或表中定义 INSTEAD OF DELETE 触发器,以代替 DELETE 语句的标准操作。通常,在视图上定义 INSTEAD OF DELETE 触发器以便在一个或多个基表中修改数据。

可在视图上定义 INSTEAD OF UPDATE 触发器以代替 UPDATE 语句的标准操作。通常,在视图上定义 INSTEAD OF UPDATE 触发器以便修改一个或多个基表中的数据

instead of 触发器的用法相关推荐

  1. (DML触发器)如何正确理解触发器的deleted表和inserted表(转)

    在触发器的设计当中,有很多的同学总是不了解怎样善用触发器来解决问题,其实问题在于他们不理解触发器最重要的两个表:inserted表和deleted表,假如你理解这两表的话,许多关于的触发器的问题就迎刃 ...

  2. SQL Server中的登录触发器概述

    This article gives you an overview of Logon triggers in SQL Server and its usage to control SQL Serv ...

  3. SQLServer触发器的使用

    基本语法 创建: create trigger trigger_name on {table_name view_name} {for After Instead of } [ insert, upd ...

  4. (十四)全解MySQL之各方位事无巨细的剖析存储过程与触发器!

    引言 本文为掘金社区首发签约文章,14天内禁止转载,14天后未获授权禁止转载,侵权必究! 前面的MySQL系列章节中,一直在反复讲述MySQL一些偏理论.底层的知识,很少有涉及到实用技巧的分享,而在本 ...

  5. oracle数据库触发器是否生效,Oracle数据库触发器

    第一次写触发器,浪费了一个小时,少了一个;编译不通过 当A表有更新或插入数据时,则触发器执行向B表插入对应条件的数据 1 CREATE OR REPLACE TRIGGER Test -- 触发器名称 ...

  6. SQL SERVER视图

    SQL SERVER视图 2011-09-29 13:56:14     我来说两句 0 我要投稿    [字体:小 大] 创建视图 创建一个虚拟表,该表以另一种方式表示一个或多个表中的数据.CREA ...

  7. TeamCity : 自动触发 Build

    创建了 build 的配置以后,您既可以手动点击 "Run" 按钮来触发一次 build 过程,也可以通过 Triggers 配置实现自动触发 build 过程.一个 trigge ...

  8. matlab中的terminator模块,2.2 Ground 及 Terminator模块

    课时:117节课 时长:20.1小时 课级:中级提高 simulink是matlab中的一种可视化仿真工具, 是一种基于matlab的框图设计环境,是实现动态系统建模.仿真和分析的一个软件包,被广泛应 ...

  9. 李大勇matlab视频解压密码,13.4 环境控制、手动开关模块

    课时:117节课 时长:20.1小时 课级:中级提高 simulink是matlab中的一种可视化仿真工具, 是一种基于matlab的框图设计环境,是实现动态系统建模.仿真和分析的一个软件包,被广泛应 ...

  10. Oracle数据库的基础

    目录 小知识点 1.dec 2.nvl 3.minus 4.连接join 5.数据库设计范式 数据库设计第一范式:(设计出没有数据冗余和数据维护异常的数据库结构) 数据库设计第二范式: 数据库设计第三 ...

最新文章

  1. 青岛大学计算机学院生物信息研究组(苏晓泉团队)招生与招聘启事
  2. Schama —— Xml文档约束技术 学习笔记
  3. boost::math模块实现图表显示使用 Lambert W 函数计算电流的测试程序
  4. 简单易用的.NET免费开源RabbitMQ操作组件EasyNetQ解析
  5. 盛大EverBox网盘
  6. java 杭州专卖店_杭州JAVA哪家有名气
  7. 那天空飘过的梅花月饼,是今年中秋最好的礼物
  8. pandas Series归一化
  9. Ajax提交表单数据(包含文件)
  10. 修改url 参数_SEO优化设计,如何处理网址的动态参数?
  11. suse linux 分区表格式
  12. 拓端tecdat|R语言GGPLOT2绘制KOLMOGOROV-SMIRNOV KS检验图ECDF经验累积分布函数曲线可视化
  13. 客户端发现响应内容类型为“text/html”,但应该是“text/xml”
  14. Map的实现类中,哪些是有序的,哪些是无序的
  15. 详解数据库的第一范式、第二范式、第三范式、BCNF范式
  16. C++ 多线程CreateThread LPVOIDlpParameter传递多个参数
  17. 【cvpr2022】CRIS: CLIP-Driven Referring Image Segmentation
  18. 流利阅读 2019.1.22 Top S. Korean animal rights group slammed for destroying dogs
  19. 软文营销如何自我激励创造巨大价值
  20. 去除nginx.conf文件中注释和空格行方法

热门文章

  1. pycharm双击无反应
  2. 文献盘点|回眸2021,理一理科研圈探索的那些大发现
  3. 利用R语言进行主成分分析的步骤
  4. 100条历史典故,读懂半个中国
  5. ANC主动降噪理论及Matlab代码实现
  6. Android实现 Eq的频响曲线,可以调节峰值,高低通。曲线为算法实现。
  7. 沟通成本:信任,外包永远的痛——外包实践(65)
  8. matlab phandom,DOMFluor 用Matlab编写的三维荧光分析工具 联合开发网 - pudn.com
  9. ps随机排列_[PS]圆点随机不重叠排列脚本
  10. 微信消息模板——巨坑