热门标签 | HotTags
当前位置:  开发笔记 > 后端 > 正文

数据库技术:SQLServer基础之表级触发器

触发器分为两种,一种与数据表绑定,响应数据表指定动作(insert、delete或update),此处称为表级;一种与数据库本身绑定,响应数据定义语句(主要是CREATE、ALTE

  触发器分为两种,一种与%ignore_a_1%表绑定,响应数据表指定动作(insertdeleteupdate),此处称为表级;一种与数据库本身绑定,响应数据定义语句(主要是createalter  drop 开头的语句),此处称为库级。本篇以下所说触发器皆指表级触发器。

  触发器是一段有特定语法,实现一定功能的sql语句,它与数据表绑定,当数据表发生指定动作(insertdeleteupdate)时,由数据库自动调用。一个触发器必须且只能绑定一张数据表,必须且只能绑定数据表的一个动作(insertdeleteupdate)。触发器可以分为两种,一种是动作之后(after),一种是替代执行(instead of)。两种触发器可以同时绑定数据表的同一个动作(insertdeleteupdate)。但动作之后(after)触发器可以同时绑定多个,而替代执行(instead of)触发器一个数据表只能绑定三个,即一个动作(insertdeleteupdate)只能绑定一个。

  触发器耗费性能,不易调试,不利于迁移,不符合时兴的面向对象设计理念,也不容易被接手老项目的人注意到,因而尽量避免使用。

触发器语法:

创建: create trigger trigger_name --触发器的名字 on {table_name | view_name} --与触发器绑定的表或视图,必须且只能与一个表或视图绑定 {for | after | instead of }  --触发器类型,动作之后(after)或替代执行(instead of) [ insert, update,delete ]  --触发器响应的具体动作,一个触发器只能响应一个动作  as            sql_statement  --你需要编写的sql语句

删除: drop  trigger   { trigger/*要删除的触发器名字*/ } [ ,...n ]

修改: alter trigger  trigger_name --触发器的名字      on  table_name --与触发器绑定的表或视图,必须且只能与一个表或视图绑定  {for | after | instead of }  --触发器类型,动作之后(after)或替代执行(instead of)   {[delete][,][insert][,][update]}--触发器响应具体动作,一个触发器只能响应一个动作       as        sql_statement; --你需要编写的sql语句

禁用启用触发器:   禁用:alter table 表名 disable trigger 触发器名称   启用:alter table 表名 enable trigger 触发器名称

   触发器执行后会自动创建两张虚表inserteddeleted。它们可以理解为系统自动创建的、在触发器中使用的临时表,触发器开始时创建,结束后删除。它们的结构与触发器绑定的表结构一致,并且是只读的。

动作

inserted

deleted

增加(insert

存放增加的记录

删除(delete

存放被删除的记录

修改(update

存放更新后的记录

存放更新前的记录

 

 

 

 

 

 

 

  当数据表只存在动作之后(after)触发器时,动作(insertdeleteupdate)对数据表进行真实更改,而存在替代执行(instead of)触发器时,动作(insertdeleteupdate)不对数据表进行真实更改。替代执行(instead of)触发器执行时间先于动作之后(after)触发器。有多个动作之后(after)触发器时,执行顺序取决于触发器建立时间,先建立的先执行。

    触发器中不能使用以下语句:

create 语句,如:create database、create table、create index 等。 alter 语句,如:alter database、alter table、alter index 等。 drop 语句,如:drop database、drop table、drop index 等。 disk 语句,如:disk init、disk resize。 load 语句,如:load database、load log。 restore 语句,如:restore database、restore log。 return 语句,如return 0.

 

=====================================================================================
数据库技术:SQL Server基础之表级触发器只代表本人的见解,可能存在错误,仅用于技术交流。如果你喜欢该文,可以扫下面的二维码打赏我(打赏敬请备注“博客园打赏”五字)。
SQL Server基础之表级触发器

 

需要了解更多数据库技术:SQL Server基础之表级触发器,都可以关注数据库技术分享栏目—编程笔记


推荐阅读
  • Navicat Premium中MySQL用户管理:创建新用户及高级设置
    本文作为Navicat Premium用户管理系列的第二部分,主要介绍如何创建新的MySQL用户,包括设置基本账户信息、密码策略、账户限制以及SSL配置等。 ... [详细]
  • 本文档提供了详细的MySQL安装步骤,包括解压安装文件、选择安装类型、配置MySQL服务以及设置管理员密码等关键环节,帮助用户顺利完成MySQL的安装。 ... [详细]
  • 使用EF Core在.Net Core控制台应用中操作SQLite数据库
    本文介绍如何利用Visual Studio 2019和Windows 10环境,通过Entity Framework Core(EF Core)实现对SQLite数据库的读写操作。项目源代码可从百度网盘下载。 ... [详细]
  • 本文提供最新的CUUG OCP 071考试题库,包含70道题目,旨在帮助考生更好地准备Oracle Certified Professional (OCP) 考试。 ... [详细]
  • 本文详细介绍如何在Spring Boot项目中集成和使用JPA,涵盖JPA的基本概念、Spring Data JPA的功能以及具体的操作步骤,帮助开发者快速掌握这一强大的持久化技术。 ... [详细]
  • 抽象工厂模式 c++
    抽象工厂模式包含如下角色:AbstractFactory:抽象工厂ConcreteFactory:具体工厂AbstractProduct:抽象产品Product:具体产品https ... [详细]
  • SQLite是一种轻量级的关系型数据库管理系统,尽管体积小巧,却能支持高达2TB的数据库容量,每个数据库以单个文件形式存储。本文将详细介绍SQLite在Android开发中的应用,包括其数据存储机制、事务处理方式及数据类型的动态特性。 ... [详细]
  • 本文旨在为初学者提供一个详细的指南,从零开始学习如何使用 ASP.NET MVC5 和 Entity Framework 6 (EF6) 搭建项目。通过逐步指导,帮助读者理解 MVC 架构的核心概念,并掌握基本的操作方法。 ... [详细]
  • J2EE平台集成了多种服务、API和协议,旨在支持基于Web的多层应用开发。本文将详细介绍J2EE平台中的13项关键技术规范,涵盖从数据库连接到事务处理等多个方面。 ... [详细]
  • 本文提供了解决在尝试重置MySQL root用户密码时遇到连接失败问题的方法,包括停止MySQL服务、以安全模式启动MySQL、手动更新用户表中的密码等步骤。 ... [详细]
  • 代码生成器实战教程:提升编程效率的利器
    本系列文章旨在通过一系列实践案例,详细介绍如何利用代码生成器提高开发效率。本文将引导您完成从下载安装到实际应用的全过程。 ... [详细]
  • UMPlatForm.NET 5.1 版本数据字典管理功能解析
    本文介绍了 UMPlatForm.NET 5.1 版本中的数据字典管理模块,探讨了该模块如何支持平台的数据共享与管理,以及如何通过用户和角色权限来增强系统的安全性。 ... [详细]
  • 本文探讨了HTA(HTML Application)环境中HTML5 IndexedDB的可用性问题,并提供了一种替代方案,即通过使用COM ActiveX对象来实现数据存储功能。 ... [详细]
  • 本文详细介绍了PHP中的回调函数及其多种实现方式,包括函数字符串、匿名函数、类静态方法和类方法。同时,探讨了闭包的概念及其在PHP中的应用,通过实例展示了如何利用闭包访问外部变量。 ... [详细]
  • 帝国cms各数据表有什么用
    CMS教程|帝国CMS帝国cmsCMS教程-帝国CMS精易编程助手源码,ubuntu桥接设置,500错误是tomcat吗,爬虫c原理,php会话包括什么,营销seo关键词优化一般多 ... [详细]
author-avatar
潘PanPanPq
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有