У меня есть простая установка с 3 таблицами: Role
, Permission
и RolePermission
.
Role: | Permission: | RolePermission:
ID SysName | ID SysName | Role Permission
-- ------- | -- ------- | ---- ----------
1 Admin | 1 DoUserThings | 1 1
2 User | 2 DoAdminThings | 1 2
| 3 HackTheGibson | 1 3
| 2 1
Идея состоит в том, что роли и разрешения существуют отдельно, а таблица "RolePermission" назначаеткакие роли имеют какие разрешения.
В этом примере администраторы имеют все разрешения, а пользователи имеют разрешение DoUserThings
.
Однако я не уверен, как правильно написать оператор INSERT.Я написал одну, которая запрашивает таблицу Role
и Permission
, но она не кажется самой производительной.Я рассматривал оператор JOIN, хотя я не уверен, к чему присоединяться.
Вот моя попытка:
INSERT INTO RolePermission (Role, Permission)
SELECT Role.ID, Permission.ID
FROM Role, Permission
WHERE
Role.SysName == 'Admin'
AND
Permission.SysName == 'DoUserThings';
Это вставит 1, 2
в таблицу RolePermission
.
Примечание. В настоящее время я использую SQLite для тестирования, но хотел бы быть совместимым с MySQL и / или PostgreSQL.