Как я уже упоминал в комментариях, используйте нормализованный подход. Учитывая, что значение для allow / dey равно bit
, на самом деле вы могли бы просто использовать 2 столбца, идентификатор пользователя и идентификатор записи:
CREATE TABLE dbo.UserAllowPermissions (UserID int,
RecordID int);
ALTER TABLE dbo.UserAllowPermissions
ADD CONSTRAINT PK_UserRecordPermission
PRIMARY KEY CLUSTERED (UserID,RecordID);
Тогда вы можете INSERT
данные у вас уже есть выше, как показано ниже:
INSERT INTO dbo.UserAllowPermissions (UserID,
RecordID)
VALUES (1, 1),
(1, 4),
(2, 3),
(3, 1),
(3, 2),
(3, 3),
(3, 4),
(4, 2),
(4, 4);
Если вы хотите отозвать разрешение пользователя, просто удалите соответствующую строку. Например, скажем, вы хотите отозвать разрешение для пользователя 3 на запись 4:
DELETE
FROM dbo.UserAllowPermissions
WHERE UserID = 3
AND RecordID = 4;
И, что неудивительно, если вы хотите предоставить разрешение пользователю, просто INSERT
строка:
INSERT INTO dbo.UserAllowPermissions (UserID, RecordID)
VALUES(5,1);
Что предоставит Пользователю с идентификатором 5 доступ к Записи с идентификатором 1.