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