抱歉这个奇怪的标题,写不出来......
看看上面的图片。
在mysql中,是否有可能/可行的基于user_id的列UNIQUE?
让我重新说一下,是否可以让订单列值仅对特定的user_id唯一?
那么,如果对于user_id = 1 order = 1并且不能有另一个order = 1.但是如果user_id = 2,我可以再次使用order = 1?
或者在与mysql接口的php脚本中控制它更好/更快?
答案 0 :(得分:2)
你可以使用一个compund索引来对其复合值强制执行唯一性,如下所示:
CREATE UNIQUE INDEX `myUniqueIndex` ON mytable (user_id, order)
任何尝试插入具有重复复合值的行都将返回可以检查
的错误答案 1 :(得分:2)
你问了几个独立的问题。
(1)是的,您只能为客户提供独特的订单。在这种情况下,您需要使用两列创建唯一索引。
(2)在与mysql接口的php脚本中控制它是否更好/更快?第一个问题与数据完整性而非性能有关。如果这是一个自动增量列,生成新的word_id会更快,因为如果不是,你的PHP代码需要查询数据库以找到最大值并添加一个。
如果您希望每个客户拥有唯一的word_id,则需要在PHP代码中生成这些内容。 MySQL无法根据另一列生成新的自动增量值(因为您使用的是InnoDB)
答案 2 :(得分:0)
在2列上创建唯一的复合键。
ALTER IGNORE TABLE tableName ADD UNIQUE KEY `someName` (user_id, `order`);