MYSQL процедура сравнения данных с переменными и запись в другую таблицу

С процедурами совсем не бум-бум. Писал все обычными запросами но в некоторых случаях приходилось делать 2-3-4 запроса чтоб получить итоговый вариант. Решил перейти на процедуры...

Погуглил, почекал, в итоге подобного варианта не нашел...

Цель получить все данные _email, _password и тд. после чего найти запись в таблице users которая равна users.email = _email AND users.password = _password после чего из этой записи получить id и записать переменные _token, _expires_at, _code, user_id( id из таблицы users ) в таблицу preToken

CREATE PROCEDURE `getPreliminaryToken` 
(
IN _email VARCHAR(45),
IN _password VARCHAR(45),
IN _token VARCHAR(45),
IN _expires_at DATETIME,
IN _code INT
)
BEGIN
 ***
END

без процедуры я выполняю :

SELECT * FROM users WHERE email = ?

проверяю пароли и тд в коде программы и делаю запрос на добавление новой записи:

REPLACE INTO preToken (token, expires_at, user_id, code) values(?, ?, ?, ?);

Буду благодарен за помощь!


Ответы (1 шт):

Автор решения: Артур Франк

Вообщем сделал процедуру: ( можно выполнить просто запросом но процедура проще в использовании)

CREATE PROCEDURE `getPreliminaryToken` 
(
IN _email VARCHAR(45),
IN _password VARCHAR(45),
IN _token VARCHAR(100),
IN _expires_at DATETIME,
IN _code INT
)
BEGIN
REPLACE INTO `pretoken` (token, expires_at, user_id, code)
SELECT _token, _expires_at, id, _code
FROM users
WHERE  users.email = _email AND users.password = _password;
END
→ Ссылка