Я работаю с ролями пользователей в своих db - роли имеют разрешения. Другими словами, у меня есть роли - разрешение подключений. Если я удалю что-то другое, это будет бесполезно. Как написать DELETE-запрос в MySQL, который также проверяет значение из другой таблицы. Если это значение существует, повышайте ошибку, если не удаляете его.Как проверить соединение данных (перед удалением) с другими таблицами
Here is my schema:
TABLE role (
id ,
name varchar(255) ,
UNIQUE (name),
# name of role PRIMARY KEY(id)
) ENGINE=InnoDB DEFAULT CHARSET=utf8;
TABLE role_permission (
id,
role_id,
permission_id,
PRIMARY KEY(id)
) ENGINE=InnoDB DEFAULT CHARSET=utf8;
TABLE permission (
id int(10) ,
action enum('GET', 'PUT', 'POST', 'DELETE') NOT NULL,
modifier enum('Any', 'Own', 'None') NOT NULL DEFAULT 'None',
resource_id int(10) unsigned NOT NULL,
PRIMARY KEY(id)
) ENGINE=InnoDB DEFAULT CHARSET=utf8
CREATE TABLE IF NOT EXISTS `resource` (
`id` int(10) unsigned NOT NULL AUTO_INCREMENT,
`resource_name` varchar(100) NOT NULL, # name of resource
UNIQUE (`resource_name`),
PRIMARY KEY(`id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8;
Вы можете использовать ограничения InnoDB для внешних ключей. –
Мне очень жаль, но я нооби в SQL. У меня есть много-много отношений. Я должен принимать значения из таблицы role_permission? – Sabutobi
Обувь для ваших структур стола. –