我如何为MySQL中的多列指定唯一约束?

我有一张桌子:

table votes (
    id,
    user,
    email,
    address,
    primary key(id),
);

现在我想让列用户,电子邮件地址唯一(一起)。

我如何在MySql中做到这一点?

  • 当然这个例子就是......一个例子。 所以请不要担心语义。

  • ALTER TABLE `votes` ADD UNIQUE `unique_index`(`user`, `email`, `address`);
    

    我有一个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`)
    );
    

    并且UNIQUE KEY与预期一样工作,它允许id_box_elements和id_router的多个NULL行。

    我正在运行MySQL 5.1.42,因此上面讨论的问题可能会有一些更新。 幸运的是,它有效,并希望它会保持这种状态。


    如果行中有NULL值,则多列唯一索引在MySQL中不起作用,因为MySQL将NULL视为唯一值,至少目前没有任何逻辑可以在多列索引中解决该问题。 是的,这种行为是疯狂的,因为它限制了很多多列索引的合法应用程序,但它就是这样......迄今为止,它是一个在MySQL上被标记为“不会修复”的bug错误轨道...

    链接地址: http://www.djcxy.com/p/93681.html

    上一篇: How do I specify unique constraint for multiple columns in MySQL?

    下一篇: mysql: works ok in console, in php will not access data