三个SQL Server 数据库触发器的例子[原创]

之前搞软件都是用Oracle的数据库,前段时间给其他部门做的一个文档管理系统,用的是SQL Server 2000的数据库,跟Oracle有些区别。

下面是两个SQL 2000的触发器的例子!

说明:

Add User的作用:当添加一个用户时自动添加用户信息页面!

Delete User的作用:当删除一个用户时,所有该用户相关的用户规则均会被删除

Delete Function的作用:当删除一项系统功能时自动清除用户规则中所有与该规则相关的记录

1 --Add User
2  If Exists(Select Name From sysobjects Where Name='AddUserInfoPage' And Type='TR')
3  Drop Trigger AddUserInfoPage
4  GO
5
6 Create Trigger AddUserInfoPage on Users
7 for Insert
8 as
9 Declare @UserID Int
10 Declare @FunctionID Int
11 If Exists(Select * From Functions Where FunctionPage='UserPanel.aspx')
12 Begin
13 Select @UserID=[ID] From Inserted
14 Select @FunctionID= [ID] From Functions Where FunctionPage='UserPanel.aspx'
15 Insert Into UserRoles(UserId,FunctionID,[Description]) Values(@UserID,@FunctionID,'用户信息')
16 End
17 GO
18
19 --Delete User
20 If Exists(Select Name From sysobjects Where Name='DeleteUserFunctions' And Type='TR')
21 Drop Trigger DeleteUserFunctions
22 GO
23
24 Create Trigger DeleteUserFunctions on Users
25 After Delete
26 as
27 Declare @UserID Int
28 If Exists(Select * From UserRoles Where UserID=(Select [ID] From Deleted))
29 Begin
30 Select @UserID=[ID] From Deleted
31 Delete From UserRoles Where UserID=@UserID
32 End
33 GO
34
35 --Delete Function
36 If Exists(Select Name From sysobjects Where Name='DeleteFunction' And Type='TR')
37 Drop Trigger DeleteFunction
38 GO
39
40 Create Trigger DeleteFunction on Functions
41 After Delete
42 as
43 Declare @FunctionID Int
44 If Exists(Select * From UserRoles Where FunctionID=(Select [ID] From Deleted))
45 Begin
46 Select @FunctionID=[ID] From Deleted
47 Delete From UserRoles Where FunctionID=@FunctionID
48 End
49 GO
50
原文地址:https://www.cnblogs.com/mic86/p/1803705.html