Вот как выглядит мой текущий SQL:
DELIMITER $$
CREATE PROCEDURE updateDefaultUserRole(
IN rid_in INT
) BEGIN
ALTER TABLE _users
MODIFY rid INT(255) NOT NULL DEFAULT rid_in; -- Modify the columns default value
UPDATE _users SET rid = rid_in WHERE rid < rid_in; -- Update all entries lower than the role ID.
END $$
DELIMITER ;
Вот как выглядит моя таблица _users базы данных:
CREATE TABLE `_users` (
`uid` int(255) NOT NULL,
`forname` varchar(40) NOT NULL,
`surname` varchar(40) NOT NULL,
`email` varchar(120) NOT NULL,
`hash` varchar(60) NOT NULL,
`created` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP,
`rid` int(255) NOT NULL DEFAULT '2'
) ENGINE=InnoDB DEFAULT CHARSET=utf8;
ALTER TABLE `_users`
ADD PRIMARY KEY (`uid`),
ADD KEY `rid` (`rid`);
MODIFY `uid` int(255) NOT NULL AUTO_INCREMENT, AUTO_INCREMENT=2;
Я получаю эту ошибку:
У вас ошибка в синтаксисе SQL; проверьте руководство, соответствующее вашей версии сервера MariaDB, чтобы найти правильный синтаксис для использования рядом с 'rid_in; - Изменить значение столбца по умолчанию
Какая ссылка на эту строку:
ALTER TABLE _users
MODIFY rid INT(255) NOT NULL DEFAULT rid_in;
Если я изменю это, игнорируя значение rid_in
:
ALTER TABLE _users
MODIFY rid INT(255) NOT NULL DEFAULT '1';
Работает нормально, как я могу связать ввод rid_in
с запросом?
Мой ожидаемый вывод - возможность использовать значение роли пользователя по умолчанию и обновить все строки со старым значением пользователя на новое:
CALL updateDefaultUserRole(@someInt)
Для возможности обновления значения по умолчанию для каждого пользователя.