--触发器学习
-------------------------------------------------------------------------------after 触发器-------------------------------------------------------------------------------
--1 insert 触发器
IF EXISTS(SELECT * FROM sys.objects WHERE name='tgr_tablename_insert')
DROP TRIGGER tgr_tablename_insert
GO
CREATE TRIGGER tgr_tablename_insert
ON dbo.TB_HR_SatisfactionEvaluation_Quota
--插入数据触发
FOR INSERT
AS
--触发执行的操作
INSERT INTO dbo.TB_HR_SatisfactionEvaluation_Quota( EvaluationYear ,EvaluationType ,LocationName ,DescVal ,DeptName ,EvaluationDesc ,enable ,createby ,CreateTime ,updateby ,updateTime)
VALUES('2017','test01','test01',123,'test01','test01',1,1,GETDATE(),1,GETDATE())
GO

--2 delete 触发器
IF EXISTS(SELECT * FROM sys.objects WHERE name='tgr_tablename_delete')
DROP TRIGGER tgr_tablename_delete
GO
CREATE TRIGGER tgr_tablename_delete
ON dbo.TB_HR_SatisfactionEvaluation_Quota
FOR DELETE
AS
--触发执行执行的操作
--DELETE FROM dbo.TB_HR_SatisfactionEvaluation_Quota WHERE CreateTime='2017-07-31' AND LocationName='test01'
PRINT '备份数据中...'

IF(OBJECT_ID('BackupTest')IS NOT NULL)
BEGIN

INSERT INTO BackupTest
SELECT
EvaluationYear ,
EvaluationType ,
LocationName ,
DescVal ,
DeptName ,
EvaluationDesc ,
enable ,
createby ,
CreateTime ,
updateby ,
updateTime
FROM Deleted;
END
ELSE
BEGIN
SELECT * INTO BackupTest FROM Deleted
END

PRINT '数据备份成功!'
GO

--3 update触发器
IF EXISTS(SELECT * FROM sys.objects WHERE name='tgr_tablename_update')
DROP TRIGGER tgr_tablename_update
GO
CREATE TRIGGER tgr_tablename_update
ON dbo.TB_HR_SatisfactionEvaluation_Quota
FOR UPDATE
AS
--触发器要执行的操作 inserted表 deleted表

--inserted表中的数据
INSERT INTO dbo.BackupTest SELECT
Inserted.EvaluationYear ,
Inserted.EvaluationType ,
Inserted.LocationName ,
Inserted.DescVal ,
Inserted.DeptName ,
Inserted.EvaluationDesc ,
Inserted.enable ,
Inserted.createby ,
Inserted.CreateTime ,
Inserted.updateby ,
Inserted.updateTime FROM Inserted
--deleted表中的数据
INSERT INTO dbo.BackupTest SELECT
Deleted.EvaluationYear ,
Deleted.EvaluationType ,
Deleted.LocationName ,
Deleted.DescVal ,
Deleted.DeptName ,
Deleted.EvaluationDesc ,
Deleted.enable ,
Deleted.createby ,
Deleted.CreateTime ,
Deleted.updateby ,
Deleted.updateTime FROM Deleted
GO
-------------------------------------------------------------------------------after 触发器-------------------------------------------------------------------------------

-------------------------------------------------------------------------------instead of 触发器-------------------------------------------------------------------------------
/*
instead of 触发器 不执行相应的update delete insert 操作,执行的只是触发器本身的脚本
*/
IF EXISTS(SELECT * FROM sys.objects WHERE name='tgr_tablename_insteadOf')
DROP TRIGGER tgr_tablename_insteadOf
GO
CREATE TRIGGER tgr_tablename_insteadOf
ON dbo.TB_HR_SatisfactionEvaluation_Quota INSTEAD OF DELETE /*update insert*/
AS
DECLARE @LocationName NVARCHAR(50)=''
SELECT @LocationName=Deleted.LocationName FROM Deleted
PRINT 'LocationName是'+@LocationName
--暂时不删除数据的
DELETE FROM dbo.TB_HR_SatisfactionEvaluation_Quota WHERE LocationName='test01'
GO

-------------------------------------------------------------------------------instead of 触发器-------------------------------------------------------------------------------

--显示自定义消息 raiseError
IF EXISTS(SELECT * FROM sys.objects WHERE name='tgr_messager')
DROP TRIGGER tgr_messager
GO
CREATE TRIGGER tgr_messager
ON dbo.TB_HR_SatisfactionEvaluation_Quota
AFTER INSERT,DELETE
AS
RAISERROR('tgr_messager触发器被触发执行',16,10)
GO

---启用 禁用触发器
DISABLE TRIGGER tgr_messager ON dbo.TB_HR_SatisfactionEvaluation_Quota;
ENABLE TRIGGER tgr_messager ON dbo.TB_HR_SatisfactionEvaluation_Quota;

--查看已经存在的触发器
SELECT * FROM sys.triggers
SELECT * FROM sys.objects WHERE type='TR'

SQL_触发器学习的更多相关文章

  1. 触发器学习笔记(:new,:old用法)

    触发器学习笔记(:new,:old用法) 触发器是数据库发生某个操作时自动运行的一类的程序         用于保持数据的完整性或记录数据库操作信息方面         触发器不能够被直接调用,只能够 ...

  2. SQL触发器学习

      简介 触发器是一种特殊类型的存储过程.触发器分为: DML( 数据操纵语言 Data Manipulation Language)触发器:数据库中表或视图的数据更改时触发,包括insert,upd ...

  3. 一篇很棒的 MySQL 触发器学习教程

    一.触发器概念 触发器(trigger):监视某种情况,并触发某种操作,它是提供给程序员和数据分析员来保证数据完整性的一种方法,它是与表事件相关的特殊的存储过程,它的执行不是由程序调用,也不是手工启动 ...

  4. SQL server触发器学习记录

    作为C#程序员,我工作内容基本就是winform,wpf,asp.net.sql接触的比较少,今天突然来了一个ticket要我修改触发器脚本....只会select*的我顿感迷茫... 需求描述:as ...

  5. SQLServer存储过程和触发器学习记录及简单例子

     一.存储过程 存储过程即为能完成特定功能的一组SQL语句集.如果需要对查出的多条数据进行操作的话,这里需要理解游标(CURSOR)的概念,对于oracle有for each row命令,可以不用游标 ...

  6. oracle 触发器学习

    触发器使用教程和命名规范 目  录触发器使用教程和命名规范 11,触发器简介 12,触发器示例 23,触发器语法和功能 34,例一:行级触发器之一 45,例二:行级触发器之二 46,例三:INSTEA ...

  7. 【MySQL】触发器学习

    MySQL手册中对触发器的定义是: 触发程序是与表有关的命名数据库对象,当表上出现特定事件时,将激活该对象.表必须是永久性表,不能将触发程序与临时表与视图关联起来. 相同触发程序动作时间和事件的给定表 ...

  8. mysql 触发器学习(可以将mysql数据同步到redis)

    1. 一个简单的例子 1.1. 创建表: create table t(s1 integer); 1.2. 触发器: delimiter | create trigger t_trigger befo ...

  9. oracle触发器学习

    转自:http://blog.csdn.net/indexman/article/details/8023740/ 本篇主要内容如下: 8.1 触发器类型 8.1.1 DML触发器 8.1.2 替代触 ...

随机推荐

  1. Flutter 1.5 发布,正式成为全平台 UI 框架!

    一. 序 在 Google I/O 2019 上,Dart 团队宣布推出新的 Flutter 稳定版本 1.5,这是 Flutter 迄今为止最大的一次版本发布. 伴随着 Flutter 1.5 的发 ...

  2. hdoj--1010--Tempter of the Bone(搜索+奇偶剪枝)

    Tempter of the Bone Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 65536/32768 K (Java/Othe ...

  3. win32编程 画图

    void cDefense::DrawAll() { HDC hDc = GetDC(m_hWnd);//获取客户区窗口,如果该值为NULL,GetDC则获整个屏幕的窗口. HDC dcMem = C ...

  4. 我网站用session做的登录,为什么清除浏览器数据后还是得重新登录?session是存在服务器上的。

    答案一: 你清除了浏览器数据,相当于把cookie也清了,那么你的sessionId也就没有了,所以你再次请求的时候服务器无法根据你携带的sessionid来获取对应的session,所以说需要重新登 ...

  5. BZOJ 4289: PA2012 Tax(最短路)

    Time Limit: 10 Sec  Memory Limit: 128 MBSubmit: 755  Solved: 240[Submit][Status][Discuss] Descriptio ...

  6. VP相关

    1.485模块电平,如果是集成的IC模块,则发送低电平,接收高电平: 2.阀门程序移植至PLC注意事项: 1) 阀门程序中的变量厘清,移植过程中阀门程序中的模块有些用到了,有些没用到,所以这是变量也很 ...

  7. yii2.0 发送邮件带word小附件

        把 common/config/main-local.php 下的 mailer 注释掉:           'mailer'=>[                    'class ...

  8. (2016北京集训十四)【xsy1556】股神小D - LCT

    题解: 题解居然是LCT……受教了 把所有区间按照端点排序,动态维护目前有重叠的区间,用LCT维护即可. 代码: #include<algorithm> #include<iostr ...

  9. HDU-2087 剪花布条 字符串问题 KMP算法 查匹配子串

    题目链接:https://cn.vjudge.net/problem/HDU-2087 题意 中文题咯 一块花布条,里面有些图案,另有一块直接可用的小饰条,里面也有一些图案.对于给定的花布条和小饰条, ...

  10. HDU 1796 How many integers can you find(容斥原理)

    题意 就是给出一个整数n,一个具有m个元素的数组,求出1-n中有多少个数至少能整除m数组中的一个数 (1<=n<=10^18.m<=20) 题解 这题是容斥原理基本模型. 枚举n中有 ...