私はテーブルを持っていますuser。列idとがありますemail。
ユーザーテーブル
id | email
1 | xxx@gmail.com
2 | yyy@gmail.com
はidでPRIMARY KEY AUTO_INCREMENT、emailはUNIQUE KEYです。テーブルに新しい行を挿入すると、DUPLICATE KEY例外がスローされます。例外がスローさidれたをフェッチしたい。DUPLICATE KEY
今、私はこれをやっています -
BEGIN
DECLARE EXIT HANDLER FOR 1062
BEGIN
SELECT id
INTO id
FROM user
WHERE email = 'xxx@gmail.com';
END;
INSERT INTO user
(email)
VALUES
('xxx@gmail.com');
SELECT LAST_INSERT_ID() INTO id;
END;
これを行うためのより良い方法があるかどうか知りたいです。これは、メールの一意性を確認するために既にスキャンした ID を取得するためにテーブルを再度スキャンすることを避けるためです。