我有一张桌子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来检查电子邮件的唯一性。