刚刚遇到一个关于UNIQUE CONSTRAINT验证命令的有趣问题。
是否可以告诉Mysql(或MariaDB)在另一个之前验证一个唯一约束(id
之前email
)?
CREATE TABLE IF NOT EXISTS users (
`pk` int unsigned NOT NULL AUTO_INCREMENT,
`id` VARCHAR(50) NOT NULL,
`email` VARCHAR(100) NOT NULL,
`name` VARCHAR(100) NOT NULL,
`password` VARCHAR(100),
PRIMARY KEY (pk),
UNIQUE INDEX id (id),
UNIQUE INDEX email (email),
) ENGINE=InnoDB AUTO_INCREMENT=1 DEFAULT CHARSET=utf8;
如果id
约束失败则是重复提交,如果email
失败则导致业务失败,创建第二个已注册电子邮件的用户。
当然,它可以通过首先搜索它来解决,但这会更平滑。