我将使用不同的方法。
添加另一个名为 Permissions 的表
CREATE TABLE Permissions
(
PermissionID int Not null
Description nvarchar(255) NOT NULL
)
CONSTRAINT [PK_permissions] PRIMARY KEY CLUSTERED
(
[PermissionID] ASC
) ON [PRIMARY]
还有一个叫做 UserPermissions
CREATE TABLE UserPermissions
(
UserID int Not Null
PermissionID int Not null
)
CONSTRAINT [PK_user_permissions] PRIMARY KEY CLUSTERED
(
[UserID]ASC,
[PermissionID] ASC
) ON [PRIMARY]
这样,每个权限都有一个适当的记录,并且您可以通过这样的查询/存储过程获得特定用户允许的权限
SELECT u.UserID, p.PermissionID, p.Description
FROM Users u INNER JOIN UserPermission up on up.UserID = u.UserID
INNER JOIN Permissions p on up.PermissionID = p.PermissionID
通过这种方式,您的代码可以检查各个权限,而无需使用位掩码来隔离适当的位,并且(虽然您的问题不需要)编写代码来搜索您的数据库以查找具有特定权限的用户将很容易