说我有
ID | PRODUCT
1 | Apples
1 | Oranges
1 | Bananas
2 | Walnuts
2 | Almonds
3 | Steak
3 | Chicken
这可能在MySQL中有这种类型的设置吗?我创建了一个测试表,并创建了一个带有主索引和自动递增的ID列。当我尝试插入所有具有相同ID的行时,mysql会返回错误。
这可以在mysql中完成吗?
答案 0 :(得分:1)
将INSERTED
设置为主键时,重复记录( ID )ID
的效果如何?基本上,它不会。主键是UNIQUE
。如果您希望记录类似,请创建另一列作为主键
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
约束,以避免重复的行。
答案 1 :(得分:0)
这是可能的,但由于你有一个重复的主键,它没有规范化。主键必须是唯一的,这意味着1
只能出现一次。如果您为每个ID
设置了自定义product
,则可以使用复合主键(id, product)
或代理键。代理键是一个唯一标识该行的自动递增列。你的表格看起来像这样:
CREATE TABLE fruits (
auto_id int AUTO_INCREMENT PRIMARY KEY,
id int,
product varchar(15))
答案 2 :(得分:0)
您不能为ID列创建主键,因为这意味着它是唯一的。 只需为您的示例采用正常索引。
另一方面,在大多数情况下,有一个主键是有意义的,所以我建议在其上添加一个普通INDEX的第三行(GENRE?)并保留主键。< / p>
插入数据时,只需插入GENRE和PRODUCT,ID就会自动填充。