-1

说我有

ID | PRODUCT
 1 |  Apples
 1 | Oranges
 1 | Bananas
 2 | Walnuts
 2 | Almonds
 3 | Steak
 3 | Chicken

这可以在 MySQL 中进行这种类型的设置吗?我创建了一个测试表,并创建了一个带有主索引和自动递增的 ID 列。当我尝试插入几行都具有相同的 ID 时,mysql 返回一个错误。

这可以在mysql中做吗?

4

3 回答 3

1

当您设置为主键时,重复记录(ID)如何?基本上不会。主键是. 如果您希望记录是这样的,请创建另一列作为您的主键INSERTEDIDUNIQUE

CREATE TABLE sampleTable
(
    ID INT NOT NULL AUTO_INCREMENT, 
    GROUP_ID INT NOT NULL, 
    PRODUCT VARCHAR(25),
    CONSTRAINT pk_name PRIMARY KEY (ID),
    CONSTRAINT uq_name UNIQUE (GROUP_ID, PRODUCT)
)

添加了一个UNIQUE约束以避免重复的行。

于 2012-09-05T01:36:08.970 回答
0

这是可能的,但它没有标准化,因为您有一个重复的主键。主键必须是唯一的,这意味着1只能出现一次。如果ID每个都有自定义product,则使用复合主键(id, product)或代理键。代理键将是唯一标识行的自动递增列。您的表格将如下所示:

CREATE TABLE fruits (
  auto_id int AUTO_INCREMENT PRIMARY KEY,
  id int,
  product varchar(15))
于 2012-09-05T01:37:28.993 回答
0

您不能为 ID 列创建主键,因为这意味着它是唯一的。只需为您的示例使用普通索引即可。

另一方面,在大多数情况下,有一个主键是有意义的,所以我建议添加一个带有正常索引的第三行(GENRE?),并保持主键不变。

插入数据时,只需要插入GENRE和PRODUCT,ID就会自动填写。

于 2012-09-05T01:38:03.327 回答