博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
数据库表新增触发器
阅读量:4517 次
发布时间:2019-06-08

本文共 2278 字,大约阅读时间需要 7 分钟。

https://www.cnblogs.com/hoojo/archive/2011/07/20/2111316.html

以上是不错的数据库触发器博客,下面是我自己整理的一些,关于修改了表字段后,做一些判断的触发

USE [Test]

GO

/****** Object: Table [dbo].[TestTrigger] Script Date: 2018/2/7 下午 02:47:29 ******/

SET ANSI_NULLS ON
GO

SET QUOTED_IDENTIFIER ON

GO

CREATE TABLE [dbo].[TestTrigger](

[ID] [INT] IDENTITY(1,1) NOT NULL,
[TestInt] [INT] NULL,
[TestNvarchar] [NVARCHAR](50) NULL,
[TestDate] [DATETIME] NULL,
CONSTRAINT [PK_TestTrigger] PRIMARY KEY CLUSTERED
(
[ID] ASC
)WITH (PAD_INDEX = OFF, STATISTICS_NORECOMPUTE = OFF, IGNORE_DUP_KEY = OFF, ALLOW_ROW_LOCKS = ON, ALLOW_PAGE_LOCKS = ON) ON [PRIMARY]
) ON [PRIMARY]

GO

 

 

--创建insert插入类型触发器

if (object_id('tgr_TestTrigger_insert', 'tr') is not null)
drop trigger tgr_TestTrigger_insert
go
create trigger tgr_TestTrigger_insert
on TestTrigger
for insert --插入触发
as
--定义变量
declare @ID int, @TestInt int, @TestNvarchar NVARCHAR(50),@TestDate DATE;
--在inserted表中查询已经插入记录信息
select @ID = ID, @TestInt = TestInt,@TestNvarchar=TestNvarchar,@TestDate=TestDate from inserted;
IF(@TestNvarchar=N'b')
BEGIN
INSERT INTO [dbo].[TestTriggerStory](TestInt,TestNvarchar,TestDate) SELECT TestInt,TestNvarchar,TestDate FROM inserted;
END
go
--创建insert插入类型触发器
if (object_id('tgr_TestTrigger_update', 'tr') is not null)
drop trigger tgr_TestTrigger_update
go
create trigger tgr_TestTrigger_update
on TestTrigger
for update --插入触发
AS

--定义变量

declare @ID int, @TestInt int, @TestNvarchar NVARCHAR(50),@TestDate DATE,
@IDNew int, @TestIntNew int, @TestNvarcharNew NVARCHAR(50),@TestDateNew DATE;
--查看更新前的数据
select @ID = ID, @TestInt = TestInt,@TestNvarchar=TestNvarchar,@TestDate=TestDate FROM Deleted ;
--PRINT @TestNvarchar
IF(@TestNvarchar<>N'b')
BEGIN
PRINT '触发了1'
select @IDNew = ID, @TestIntNew = TestInt,@TestNvarcharNew=TestNvarchar,@TestDateNew=TestDate FROM inserted ;
IF(@TestNvarcharNew=N'b')
BEGIN
INSERT INTO [dbo].[TestTriggerStory](TestInt,TestNvarchar,TestDate) SELECT TestInt,TestNvarchar,TestDate FROM inserted;
PRINT '触发了2'
END
END

 

INSERT INTO dbo.TestTrigger

( TestInt, TestNvarchar, TestDate )
VALUES ( 0, -- TestInt - int
N'b', -- TestNvarchar - nvarchar(50)
GETDATE() -- TestDate - datetime
)

 

SELECT * FROM dbo.TestTrigger

UPDATE dbo.TestTrigger SET TestNvarchar=N'b' WHERE ID=1

 

转载于:https://www.cnblogs.com/shexunyu/p/8426628.html

你可能感兴趣的文章
hadoop之 mapreduce example(2)
查看>>
3.2.2.频数分布
查看>>
Django图文混排
查看>>
No converter found for return value of type: class com.alibaba.fastjson.JSON解决办法
查看>>
苦酒入喉心作痛,红酒入鹅鹅想哭——震惊!勒索病毒想哭靠wine感染了Ubuntu16.04...
查看>>
VB内存操作类模块
查看>>
Python 2.7 与Python3的区别
查看>>
修复grub
查看>>
权值线段树
查看>>
leetcode 388.Lonest Absolute File Path
查看>>
瀑布流
查看>>
ECS
查看>>
如何利用Python词云和wordart可视化工具对朋友圈数据进行可视化展示
查看>>
如何高效利用github提升自己
查看>>
BZOJ1590 [Usaco2008 Dec]Secret Message 秘密信息
查看>>
无缝轮播
查看>>
关于图片上传的实例
查看>>
JS HTML DOM 事件对象(onclick、onmouseenter)
查看>>
sqlserver复制表
查看>>
wsdl.exe的用法与参数说明
查看>>