Я делаю работу для колледжа, и у меня возникают проблемы с созданием хранимой процедуры для удаления пользователя. Мне нужно проверить, играет ли пользователь определенную роль, чтобы решить, что еще делать после удаления.
Основная идея заключается в том, что вы вводите псевдоним в качестве параметра, и пользователь с таким адресом электронной почты будет удален. Все это хорошо и работает с простым запросом «DROP USER IF EXISTS username». Я понял.
Но у меня есть 3 роли, и если пользователь создается с одной из этих ролей, он также вставляется в эту таблицу.
CREATE DEFINER=`root`@`localhost` PROCEDURE `deleteUser`(
IN Nickname varchar(45))
BEGIN
DECLARE `Host` CHAR(14) DEFAULT '@\'localhost\'';
DECLARE `Gmail` CHAR(14) DEFAULT '@\'gmail.com\'';
SET `Username`:= CONCAT(`Nickname`,`Host`);
SET `Email`:= CONCAT(`Nickname`,`Gmail`);
IF ("`Username` is investigador")
Delete user where Gmail = Email from table Investigadores
DROP USER IF EXISTS `Username`;
END
Я ищу следующее поведение:
- вызовите deleteUser хранимую процедуру
- удалить пользователя из MySQL
- если пользователь имеет роль «исследователь», удалите строку, в которой этот пользователь
Но как мне сделать эту проверку внутри оператора IF?