instead of 触发器的用法
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 触发器的用法相关推荐
- (DML触发器)如何正确理解触发器的deleted表和inserted表(转)
在触发器的设计当中,有很多的同学总是不了解怎样善用触发器来解决问题,其实问题在于他们不理解触发器最重要的两个表:inserted表和deleted表,假如你理解这两表的话,许多关于的触发器的问题就迎刃 ...
- SQL Server中的登录触发器概述
This article gives you an overview of Logon triggers in SQL Server and its usage to control SQL Serv ...
- SQLServer触发器的使用
基本语法 创建: create trigger trigger_name on {table_name view_name} {for After Instead of } [ insert, upd ...
- (十四)全解MySQL之各方位事无巨细的剖析存储过程与触发器!
引言 本文为掘金社区首发签约文章,14天内禁止转载,14天后未获授权禁止转载,侵权必究! 前面的MySQL系列章节中,一直在反复讲述MySQL一些偏理论.底层的知识,很少有涉及到实用技巧的分享,而在本 ...
- oracle数据库触发器是否生效,Oracle数据库触发器
第一次写触发器,浪费了一个小时,少了一个;编译不通过 当A表有更新或插入数据时,则触发器执行向B表插入对应条件的数据 1 CREATE OR REPLACE TRIGGER Test -- 触发器名称 ...
- SQL SERVER视图
SQL SERVER视图 2011-09-29 13:56:14 我来说两句 0 我要投稿 [字体:小 大] 创建视图 创建一个虚拟表,该表以另一种方式表示一个或多个表中的数据.CREA ...
- TeamCity : 自动触发 Build
创建了 build 的配置以后,您既可以手动点击 "Run" 按钮来触发一次 build 过程,也可以通过 Triggers 配置实现自动触发 build 过程.一个 trigge ...
- matlab中的terminator模块,2.2 Ground 及 Terminator模块
课时:117节课 时长:20.1小时 课级:中级提高 simulink是matlab中的一种可视化仿真工具, 是一种基于matlab的框图设计环境,是实现动态系统建模.仿真和分析的一个软件包,被广泛应 ...
- 李大勇matlab视频解压密码,13.4 环境控制、手动开关模块
课时:117节课 时长:20.1小时 课级:中级提高 simulink是matlab中的一种可视化仿真工具, 是一种基于matlab的框图设计环境,是实现动态系统建模.仿真和分析的一个软件包,被广泛应 ...
- Oracle数据库的基础
目录 小知识点 1.dec 2.nvl 3.minus 4.连接join 5.数据库设计范式 数据库设计第一范式:(设计出没有数据冗余和数据维护异常的数据库结构) 数据库设计第二范式: 数据库设计第三 ...
最新文章
- 青岛大学计算机学院生物信息研究组(苏晓泉团队)招生与招聘启事
- Schama —— Xml文档约束技术 学习笔记
- boost::math模块实现图表显示使用 Lambert W 函数计算电流的测试程序
- 简单易用的.NET免费开源RabbitMQ操作组件EasyNetQ解析
- 盛大EverBox网盘
- java 杭州专卖店_杭州JAVA哪家有名气
- 那天空飘过的梅花月饼,是今年中秋最好的礼物
- pandas Series归一化
- Ajax提交表单数据(包含文件)
- 修改url 参数_SEO优化设计,如何处理网址的动态参数?
- suse linux 分区表格式
- 拓端tecdat|R语言GGPLOT2绘制KOLMOGOROV-SMIRNOV KS检验图ECDF经验累积分布函数曲线可视化
- 客户端发现响应内容类型为“text/html”,但应该是“text/xml”
- Map的实现类中,哪些是有序的,哪些是无序的
- 详解数据库的第一范式、第二范式、第三范式、BCNF范式
- C++ 多线程CreateThread LPVOIDlpParameter传递多个参数
- 【cvpr2022】CRIS: CLIP-Driven Referring Image Segmentation
- 流利阅读 2019.1.22 Top S. Korean animal rights group slammed for destroying dogs
- 软文营销如何自我激励创造巨大价值
- 去除nginx.conf文件中注释和空格行方法