SQL Server 触发器(Trigger)之 After 触发器。
| 内容简介 |
-- =============================================
-- Comments:创建基本的触发器,修改触发器,删除触发器
-- 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 ( SELECTname FROMsys.databases WHEREname= N'TestDb' ) DROPDATABASETestDb GO CREATEDATABASETestDb GO use TestDb go -- ============================================= -- ylb:1,创建用户表 -- ============================================= createtableUsers ( userIDintprimarykeyidentity(100,1), usernamevarchar(200)notnull, sexchar(2)default('男'), scorenumeric(7,1)--成绩 ) go --TestData insertintoUsers(username,sex,score)values('sunshine','男',60.5); insertintoUsers(username,sex,score)values('dream','女',80); insertintoUsers(username,sex,score)values('rain','男',70); insertintoUsers(username,sex,score)values('mike','男',75); go select*fromUsers GO |
| 2, 第二步,创建触发器 示例一 |
use TestDb go --====================================== -- Create T-SQL Trigger Template -- ylb:创建触发器 -- 条件:1,创建一个触发器,当向“Users”表插入数据时,提示“添加成功!” --====================================== CREATETRIGGERtri_Users_Insert ONUsers AFTERINSERT AS BEGIN '添加成功!' END GO --Test,1 insertintoUsers(username,sex,score)values('Trigger_Insert','男',75); |
| 3,创建触发器 示例二 | 注意:现在这个功能没有精确实现,只要修改这一行,都无法修改,望有高手指教 |
use TestDb go --====================================== -- Create T-SQL Trigger Template -- ylb:创建触发器 -- 条件:不允许修改“score(成绩)”,这一列,如果有则,滚回操作 --====================================== CREATETRIGGERtri_Users_Score_Update onUsers AFTERUPDATE AS BEGIN '修改失败!成绩这一列,不允许修改!' ROLLBACKTRANSACTION END GO --Test,2 --把编号是“100”的用户的成绩改成88分。 updateUserssetscore=100whereuserID=100 go |
| 4,第三步,修改触发器 |
use TestDb go --====================================== -- Alter T-SQL Trigger Template -- ylb:修改触发器 --====================================== ALTERTRIGGERtri_Users_Insert ONUsers AFTERINSERT AS BEGIN '添加用户成功!' END GO --Test,1 insertintoUsers(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')ISNOTNULL DROPTRIGGERtri_Users_Score_Update GO |
