如何防止在具有两列的表中创建重复行,这两列都不是唯一的?这可以仅使用MySQL来完成,还是需要使用我的PHP脚本进行检查?
这是有问题的表的CREATE查询(存在另外两个表,users和roles):
CREATE TABLE users_roles (
user_id INT(100) NOT NULL,
role_id INT(100) NOT NULL,
FOREIGN KEY (user_id) REFERENCES users(user_id),
FOREIGN KEY (role_id) REFERENCES roles(role_id)
) ENGINE = INNODB;
Run Code Online (Sandbox Code Playgroud)
我希望以下查询,如果执行多次,则抛出错误:
INSERT INTO users_roles (user_id, role_id) VALUES (1, 2);
Run Code Online (Sandbox Code Playgroud)
请不要推荐使用bitmasks作为答案.
谢谢!
在不更改键定义的内容的情况下,您可以添加约束
ALTER TABLE users_roles ADD CONSTRAINT UNIQUE (user_id, role_id);
Run Code Online (Sandbox Code Playgroud)