У меня есть две таблицы Users
и Permissions
, а также таблица соединений UserPermissions
, подобная этой (эти таблицы являются примерами):
CREATE TABLE Users (
UserLogin varchar(50) PRIMARY KEY,
UserPassword varchar(50) NOT NULL,
UserName varchar(50) NOT NULL
);
CREATE TABLE Permissions (
PermissionKey varchar(50) PRIMARY KEY,
PermissionDescription varchar(500) NOT NULL
);
-- This is the junction table.
CREATE TABLE UserPermissions (
UserLogin varchar(50) REFERENCES Users (UserLogin),
PermissionKey varchar(50) REFERENCES Permissions (PermissionKey),
PRIMARY KEY (UserLogin, PermissionKey)
);
Я создал форму для добавления и удаления разрешений пользователей.но я не знаю, как лучше всего управлять UserPermissions
таблицей
. Представьте, что у пользователя SomeUser
есть 3 разрешения:
INSERT INTO UserPermissions (UserLogin, PermissionKey)
VALUES ('SomeUser', 'TheKey') , ('SomeUser', 'TheKey1') , ('SomeUser', 'TheKey2');
Но это позже (с формой) Я хочу изменить эти разрешения и поставить только: TheKey1
, TheKey4
, TheKey5
(поэтому есть TheKey
и TheKey2
разрешения, которые были удалены)
Каким образом я могучтобы сделать это изменение эффективно, я нашел это решение, которое работает:
DELETE FROM UserPermissions WHERE UserLogin = 'SomeUser';
INSERT INTO UserPermissions VALUES ('SomeUser', 'TheKey1') , ('SomeUser', 'TheKey4') , ('SomeUser', 'TheKey5');
Есть ли лучший способ изменить пять, десять или двадцать разрешений одновременно?