Использование переменных в INSERT запросах
Сегодня поговорим об использовании переменных в MySQL на примере запросов типа INSERT
.
Задача: Создать пользователя. С учетом выданного id пользователя добавить его ФИО и другие данные.
Нюансы:
– id пользователя нельзя получить с помощью auto_increment
поля, так как в обычном режиме номера пользователей начинаются с 1000. До 1000 идут учетные записи админов и модераторов.
– Пароль хранится в виде md5
хэша.
SET @login := 'ivanovii'; SET @pass := 'randompass'; SET @salt := 'randomsalt'; SET @F := 'Иванов'; SET @I := 'Иван'; SET @O := 'Иваныч'; SELECT @id := 1 + MAX(id) FROM user WHERE id < 1000; INSERT INTO user (id, is_active, role, login, `password`, salt) VALUES (@id, 1, 'admin', @login, md5(@pass+@salt), @salt); INSERT INTO user_fio (F, I, O, user_id) VALUES (@F, @I, @O, @id); |
Для удобства редактирования создано 6 вспомогательных переменных, в которые заносятся логин, пароль, соль и ФИО. При добавлении следующего пользователя вам не нужно править SQL запросы. Нужно просто отредактировать переменные – это очень удобно.
Первый запрос выбирает следующий доступный id для админов и присваивает его переменной @id.
Второй запрос добавляет пользователя с указанными данными.
Третий запрос добавляет фамилию, имя и отчество пользователя в отдельную таблицу.