您的位置:首页 > 数据库

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

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

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

说明:

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

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

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

--Add User
If Exists(Select Name From sysobjects Where Name='AddUserInfoPage' And Type='TR')
Drop Trigger AddUserInfoPage
GO

Create Trigger AddUserInfoPage on Users
for Insert
as
Declare @UserID Int
Declare @FunctionID Int
If Exists(Select * From Functions Where FunctionPage='UserPanel.aspx')
Begin
Select @UserID=[ID] From Inserted
Select @FunctionID= [ID] From Functions Where FunctionPage='UserPanel.aspx'
Insert Into UserRoles(UserId,FunctionID,[Description]) Values(@UserID,@FunctionID,'用户信息')
End
GO

--Delete User
If Exists(Select Name From sysobjects Where Name='DeleteUserFunctions' And Type='TR')
Drop Trigger DeleteUserFunctions
GO

Create Trigger DeleteUserFunctions on Users
After Delete
as
Declare @UserID Int
If Exists(Select * From UserRoles Where UserID=(Select [ID] From Deleted))
Begin
Select @UserID=[ID] From Deleted
Delete From UserRoles Where UserID=@UserID
End
GO

--Delete Function
If Exists(Select Name From sysobjects Where Name='DeleteFunction' And Type='TR')
Drop Trigger DeleteFunction
GO

Create Trigger DeleteFunction on Functions
After Delete
as
Declare @FunctionID Int
If Exists(Select * From UserRoles Where FunctionID=(Select [ID] From Deleted))
Begin
Select @FunctionID=[ID] From Deleted
Delete From UserRoles Where FunctionID=@FunctionID
End
GO
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: