1

对不起,标题很奇怪,不能写得更好......

在此处输入图像描述

看看上面的图片。

在 mysql 中,是否有可能/可行基于 user_id 列 UNIQUE?

让我换个说法,是否可以让订单列值全部唯一,只针对特定的 user_id?

因此,如果对于 user_id = 1 订单 = 1 并且不能有另一个订单 = 1。但是如果 user_id = 2 我可以再次拥有订单 = 1?

或者在与mysql接口的php脚本中控制这个更好/更快?

4

3 回答 3

3

你可以有一个复合索引来强制其复合值的唯一性,如下所示:

CREATE UNIQUE INDEX `myUniqueIndex` ON mytable (user_id, order)

任何尝试插入具有重复复合值的行都会返回一个错误,您可以检查一下

于 2013-10-12T15:35:45.893 回答
3

你在问几个独立的问题。

(1) 是的,您只能为客户拥有唯一的订单。在这种情况下,您需要使用两列创建唯一索引。

(2) 在与 mysql 接口的 php 脚本中控制它是否更好/更快?第一个问题与数据完整性有关,而不是与性能有关。如果它是一个自动增量列,则生成新的 word_id 会更快,因为如果不是,您的 PHP 代码需要查询数据库以找到最大值并添加一个。

如果您希望每个客户拥有唯一的 word_id,则需要在 PHP 代码中生成它们。MySQL 无法基于另一列生成新的自动增量值(因为您使用的是 InnoDB)

于 2013-10-12T15:37:29.500 回答
0

在 2 列上创建唯一的复合键。

ALTER IGNORE TABLE tableName ADD UNIQUE KEY `someName` (user_id, `order`);
于 2013-10-12T15:33:18.470 回答