Niy*_*yaz 835 mysql composite-key unique-constraint database-table
我有一张桌子:
table votes (
id,
user,
email,
address,
primary key(id),
);
Run Code Online (Sandbox Code Playgroud)
现在我想使列用户,电子邮件,地址唯一(一起).
我如何在MySql中执行此操作?
jon*_*ohn 1383
ALTER TABLE `votes` ADD UNIQUE `unique_index`(`user`, `email`, `address`);
Run Code Online (Sandbox Code Playgroud)
Fro*_*dik 223
我有一个MySQL表:
CREATE TABLE `content_html` (
`id` int(11) NOT NULL AUTO_INCREMENT,
`id_box_elements` int(11) DEFAULT NULL,
`id_router` int(11) DEFAULT NULL,
`content` mediumtext COLLATE utf8_czech_ci NOT NULL,
PRIMARY KEY (`id`),
UNIQUE KEY `id_box_elements` (`id_box_elements`,`id_router`)
);
Run Code Online (Sandbox Code Playgroud)
并且UNIQUE KEY的工作方式与预期的一样,它允许id_box_elements和id_router的多个NULL行.
我正在运行MySQL 5.1.42,所以可能在上面讨论的问题上有一些更新.幸运的是它有效,希望它能保持这种状态.
小智 49
如果行中有NULL值,则多列唯一索引在MySQL中不起作用,因为MySQL将NULL视为唯一值,并且至少当前没有逻辑可以在多列索引中解决它.是的,这种行为是疯狂的,因为它限制了很多合法的多列索引应用程序,但它就是这样......到目前为止,这是一个在MySQL上标记为"无法修复"的错误错误轨道...
Eri*_*ick 23
你试过这个吗?
UNIQUE KEY `thekey` (`user`,`email`,`address`)
Run Code Online (Sandbox Code Playgroud)
riz*_*zon 11
这适用于mysql版本5.5.32
ALTER TABLE `tablename` ADD UNIQUE (`column1` ,`column2`);
Run Code Online (Sandbox Code Playgroud)
小智 6
您可以通过phpMyAdmin添加多列唯一索引.(我在4.0.4版本中测试过)
导航到目标表的结构页面.向其中一列添加唯一索引.展开结构页面底部的" 索引"列表,以查看刚刚添加的唯一索引.单击编辑图标,然后在以下对话框中,您可以向该唯一索引添加其他列.
MySql 5或更高版本的行为与此类似(我刚刚测试过):
示例:PRODUCT_NAME,PRODUCT_VERSION'glass',null'glass',null'wine',1
现在,如果你再次尝试插入('wine'1),它将报告约束违规希望这会有所帮助
这个教程对我有用
ALTER TABLE table_name
ADD CONSTRAINT constraint_name UNIQUE (column1, column2, ... column_n);
Run Code Online (Sandbox Code Playgroud)
https://www.mysqltutorial.org/mysql-unique-constraint/
我这样做:
CREATE UNIQUE INDEX index_name ON TableName (Column1, Column2, Column3);
Run Code Online (Sandbox Code Playgroud)
我对独特的约定index_name
是TableName_Column1_Column2_Column3_uindex
.