我有两个表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');
有没有更好的方法同时修改五个、十个或二十个权限?
最佳答案
我认为像您一样删除所有权限然后再次插入它们是一个好方法。
如果您不想这样做,您必须知道权限是什么,并且只更新更改。这个比较复杂,错误的变化也比较大。
关于mysql - 管理联结表的最佳方法是什么? (删除和插入),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56541036/