SqlServer学习之触发器

什么是触发器?

  根据百度百科的解释,触发器是SqlServer提供给程序员和数据分析员来保证数据完整性的一种方法,它是与表事件相关的特殊的存储过程,他的执行不是有程序调用,也不是手工启动,而是由事件来出发,比如当对一个表进行增删改时就会激活它执行。触发器经常用于加强数据的文整形越是和业务规则等,触发器可以从DBA_TRIGGERS,USER_TRIGGERS 数据字典中查找到,Sql3的触发器是一个能由系统自动执行对数据库修改的语句。

触发器与存储过程唯一的区别就是,触发器无法通过EXECUTE语句执行,而是在用户执行Transact_sql语句时自动触发。

 触发器的分类:

  • DML(数据操纵语言 Data Manipulation Language)触发器

    当数据库中表的数据发生变化时(Update、Insert、Delete)触发;主要用来强制执行业务规则,拓展约束,默认值等,因为约束只能约束同一张表的内容,而触发器则可以执行任意sql命令;

  • DDL(数据定义语言 Data Definition  Language)触发器

    在数据库结构发生变化时触发,主要用来记录数据库的修改过程,以及限制程序员对数据库的修改,比如不允许删除某些指定表等。

  • 登陆触发器

    主要响应登陆事件,如果登录失败则不触发登陆触发器。

触发器的优点?

  1、触发器可以通过数据库中的相关表实现级联更改;通过级联引用完整性约束可以有效地执行这些更改;

  2、可以实现比check越是定义的约束更为复杂的约束;

  3、触发器可以引用其他表中的列;

  4、触发器可以评估数据修改前后的表状态,并根据其差异采取对策。  

 

触发器的缺点?

  1、在进行数据库导入导出的时候,可能会引起不必要的触发器逻辑。

 

触发器的写法

  

create trigger trigger_name
on {table_name view_name}
{for After Instead of }
[ insert, update,delete ]
as
sql_statement

 

SQL Server为每个触发器都创建了两个专用表:Inserted表和Deleted表。这两个表由系统来维护﹐它们存在于内存中而不是在数据库中。这两个表的结构总是与被该触发器作用的表的结构相同。触发器执行 完成后﹐与该触发器相关的这两个表也被删除。
Deleted表存放由于执行Delete或Update语句而要从表中删除的所有行。 
Inserted表存放由于执行Insert或Update语句而要向表中插入的所有行。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/438199.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

base64原理及其编解码的python实现

base64原理及其编解码的python实现base64base64简介base64编码表base64编码原理base64编解码的python实现其他base编码base16base32base36、base58、 base62、 base85、base91、 base92base64 base64简介 base64是一种基于64个可打印字符来表示二进制数据的表示方法。2664&am…

Microsoft Visual Studio 文件识别及其用途简述

VS2008 新建项目后会产生相应的文件sln、ncb、suo、以及相应项目工程文件夹,项目工程文件夹下包括vcproj、filters、ReadMe.txt、targetver.h、stdafx.h、stdafx.cpp及其他文件;VS2010/VS2010/VS2012/VS2013 新建项目后会产生文件sln、suo、sdf、ipch文件…

REVERSE-PRACTICE-JarvisOJ-1

REVERSE-PRACTICE-JarvisOJ-1[61dctf]androideasy[61dctf]stheasyDD - Android NormalDD - Android Easy[61dctf]androideasy apk文件,用jadx-gui打开 主要的逻辑为,获取输入,检验输入的长度,输入异或23后与已知数组比较&#xf…

NuGet学习笔记(1) 初识NuGet及快速安装使用

关于NuGet园子里已经有不少介绍及使用经验,本文仅作为自己研究学习NuGet一个记录。 初次认识NuGet是在去年把项目升级为MVC3的时候,当时看到工具菜单多一项Library Package Manager,右键项目文件多了一项Manage Nuget Packages...&#xff0c…

NuGet学习笔记(2) 使用图形化界面打包自己的类库

上文NuGet学习笔记(1) 初识NuGet及快速安装使用说到NuGet相对于我们最重要的功能是能够搭建自己的NuGet服务器,实现公司内部类库的轻松共享更新。在安装好NuGet扩展后,我们已经能够通过NuGet轻松下载自己需要的类库,下面来说一说如何将自己的…

REVERSE-PRACTICE-JarvisOJ-2

REVERSE-PRACTICE-JarvisOJ-2DD - HelloAPK_500DebugMeFindPassDD - Hello macos文件,无壳,ida分析 start函数和sub_100000C90函数没什么作用 主要的逻辑在sub_100000CE0函数,反调试检测和byte_100001040数组的循环变换,最后打印…

NuGet学习笔记(3) 搭建属于自己的NuGet服务器

文章导读 创建NuGetServer Web站点 发布站点到IIS 添加本地站点到包包数据源 在上一篇NuGet学习笔记(2) 使用图形化界面打包自己的类库 中讲解了如何打包自己的类库,接下来进行最重要的一步,从零开始搭建属于自己的NuGet服务器,诚然园子里…

REVERSE-PRACTICE-JarvisOJ-3

REVERSE-PRACTICE-JarvisOJ-3爬楼梯软件密码破解-1Classical CrackMe2Smali爬楼梯 apk文件,放到模拟器里运行一下 “爬一层楼”按钮可按,每按一下,“已爬的楼层”加1层 “爬到了,看FLAG”按钮不可按,应该是“已爬的楼…

管理全局包、缓存和临时文件夹

每当安装、更新或还原包时,NuGet 将管理项目结构多个文件夹之外的包和包信息: name说明和位置(每个用户)global‑packagesglobal-packages 文件夹是 NuGet 安装任何下载包的位置。 每个包完全展开到匹配包标识符和版本号的子文件…

REVERSE-PRACTICE-JarvisOJ-4

REVERSE-PRACTICE-JarvisOJ-4Classical CrackmeFindKeyClassical Crackme exe程序,输入注册码,输入错误弹窗 查壳发现是.Net程序,dnSpy打开(要不要用de4dot unpack无所谓,这里打开的是解包过的程序) 按下“…

在解决方案中所使用 NuGet 管理软件包依赖

使用程序包恢复功能可以在提交源代码时, 不需要将 packages 中的程序集文件提交到源代码管理中,大幅减少项目的尺寸。所有NuGet程序包都存储在解决方案的Packages文件夹中。 要启用程序包恢复功能,可右键单击解决方案(注意,不是右…

REVERSE-PRACTICE-BUUCTF-1

REVERSE-PRACTICE-BUUCTF-1easyrereverse1reverse2内涵的软件easyre exe程序,无壳,ida分析 左侧函数窗找到main函数,flag提交即可 reverse1 exe程序,运行后提示输入flag,ida分析 左侧函数窗无明显的main函数&#…

REVERSE-PRACTICE-BUUCTF-2

REVERSE-PRACTICE-BUUCTF-2新年快乐[BJDCTF 2nd]guessgamehellowordxor新年快乐 exe程序,运行后提示输入正确的flag,有upx壳,常规工具脱壳即可 ida分析,左侧函数窗找到main函数,F5反汇编,简单的输入比较逻…

UML口诀

接口继承用三角, 聚合组合用菱形, 依赖关联是箭头, 虚弱实强指源头。

REVERSE-PRACTICE-BUUCTF-3

REVERSE-PRACTICE-BUUCTF-3reverse3不一样的flagSimpleRevJava逆向解密reverse3 exe程序,无壳,用ida分析 左侧函数窗最后找到main函数,F5反汇编 先base64,然后顺序加上对应的下标,最后比较,写逆脚本即可得…

console对象的方法log、info、warn、error的区别及几个实用的方法

先说一下console,JavaScript 原生中默认是没有 Console 对象,这是某些浏览器提供的内置对象。 在不同的浏览器里显示可能不同 下面的运行截图中,图中的灰色是运行的这句,灰色下面是此句运行的结果 log()、info()、warn()、error()…

认识ASP.NET 5项目结构和项目文件xproj

ASP.NET 5 在项目结构上做了很大的改变,我们以前熟悉的目录结构与项目文件内容都不太一样了,本篇文章带大家了解 ASP.NET 5 到底跟以前有哪些不一样的地方。 我们先用 Visual Studio 2015 建立一个全新的 ASP.NET 5 网站项目,打开VS2015&…

REVERSE-PRACTICE-BUUCTF-4

REVERSE-PRACTICE-BUUCTF-4刮开有奖[BJDCTF 2nd]8086[GKCTF2020]Check_1n[GXYCTF2019]luck_guy刮开有奖 exe文件,运行后无任何提示,无壳,用ida分析 WinMain->DialogBoxParamA->DialogFunc DialogBoxParamA函数: DialogFun…

REVERSE-PRACTICE-BUUCTF-5

REVERSE-PRACTICE-BUUCTF-5findit简单注册器[GWCTF 2019]pyre[BJDCTF2020]JustREfindit apk文件,直接上jadx-gui分析 验证输入的逻辑比较简单,写脚本即可 安装这个apk,将字符串输入即可得到flag,当然也可以直接写输出flag的脚本…

REVERSE-PRACTICE-BUUCTF-6

REVERSE-PRACTICE-BUUCTF-6rsaCrackRTF[2019红帽杯]easyRE[ACTF新生赛2020]easyrersa 解压出来是.enc和.key两个文件,.enc是密文,.key存放着公钥信息 使用在线网站或者openssl解析.key文件中存放着的公钥信息 可获知rsa需要的模数n和公钥e 使用在线网站…