SQLServer-触发器(Trigger)之After触发器

来源:这里教程网 时间:2026-03-02 10:24:36 作者:

SQL Server 触发器(Trigger)之 After 触发器。

内容简介

-- =============================================

-- ylb:测试触发器
-- Comments:创建基本的触发器,修改触发器,删除触发器
-- TriggerType:After触发器
-- KeyWord:Trigger, SQL Server
--
-- ylb: ylb,tech
-- 9:52 2012/2/17
-- =============================================
技术与环境

语言类别:

SQL之T-SQL

thankyou: sunshine, 谢谢你的默默付出

数据库:

SQL Server

学习软件:

Micrsofot SQL Server

课程总策划:

yuanbo

English name:

sunshine

个人主页:

http://www.cnblogs.com/ylbtech/

科研团队:

ylbtech

教研团队:

ylbtech

1,第一步,创建基本的数据库和插入测试数据

--
=============================================
--
ylb:测试触发器
--
Remark:创建基本的触发器,修改触发器,删除触发器
--
TriggerType:After触发器
--
=============================================
USE
master
GO
--
Drop the database if it already exists
IF
EXISTS (
SELECT 
name
FROM 
sys.databases
WHERE 
name
= N
'TestDb'
)
DROP 
DATABASE
TestDb
GO
CREATE 
DATABASE 
TestDb
GO
use
TestDb
go
--
=============================================
-- ylb:1,创建用户表
--
=============================================
create 
table
Users
(
userID 
int
primary 
key 
identity(100,1),
username 
varchar
(200)
not 
null
,
sex 
char
(2)
default
(
'男'
),
score 
numeric
(7,1)
--成绩
)
go
--TestData
insert 
into
Users(username,sex,score)
values
(
'sunshine'
,
'男'
,60.5);
insert 
into
Users(username,sex,score)
values
(
'dream'
,
'女'
,80);
insert 
into
Users(username,sex,score)
values
(
'rain'
,
'男'
,70);
insert 
into
Users(username,sex,score)
values
(
'mike'
,
'男'
,75);
go
select 
*
from 
Users
GO
2, 第二步,创建触发器 示例一
use
TestDb
go
--======================================
--
Create T-SQL Trigger Template
--
ylb:创建触发器
--
条件:1,创建一个触发器,当向“Users”表插入数据时,提示“添加成功!”
--======================================
CREATE 
TRIGGER 
tri_Users_Insert
ON 
Users
AFTER 
INSERT
AS
BEGIN
PRINT 
'添加成功!'
END
GO
--Test,1
insert 
into
Users(username,sex,score)
values
(
'Trigger_Insert'
,
'男'
,75);
3,创建触发器 示例二 注意:现在这个功能没有精确实现,只要修改这一行,都无法修改,望有高手指教

use
TestDb
go
--======================================
--
Create T-SQL Trigger Template
--
ylb:创建触发器
--
条件:不允许修改“score(成绩)”,这一列,如果有则,滚回操作
--======================================
CREATE 
TRIGGER 
tri_Users_Score_Update
on 
Users
AFTER 
UPDATE
AS
BEGIN
PRINT 
'修改失败!成绩这一列,不允许修改!'
ROLLBACK 
TRANSACTION
END
GO
--Test,2
--把编号是“100”的用户的成绩改成88分。
update 
Users
set 
score=100 
where
userID=100
go
4,第三步,修改触发器

use
TestDb
go
--======================================
--
Alter T-SQL Trigger Template
--
ylb:修改触发器
--======================================
ALTER 
TRIGGER
tri_Users_Insert
ON 
Users
AFTER 
INSERT
AS
BEGIN
PRINT 
'添加用户成功!'
END
GO
--Test,1
insert 
into
Users(username,sex,score)
values
(
'Trigger_Insert'
,
'男'
,75);
5,第四步,删除触发器

use
TestDb
go
--======================================
--
Drop Trigger Template
--
ylb:删除触发器
--======================================
USE
TestDb
GO
IF
OBJECT_ID (
'ri_Users_Score_Update'
,
'TR'
)
IS 
NOT 
NULL
DROP 
TRIGGER
tri_Users_Score_Update
GO
<!-- 正文结束 -->

相关推荐