私はテーブルを持っています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 を取得するためにテーブルを再度スキャンすることを避けるためです。