说我有
ID | PRODUCT
1 | Apples
1 | Oranges
1 | Bananas
2 | Walnuts
2 | Almonds
3 | Steak
3 | Chicken
这可以在 MySQL 中进行这种类型的设置吗?我创建了一个测试表,并创建了一个带有主索引和自动递增的 ID 列。当我尝试插入几行都具有相同的 ID 时,mysql 返回一个错误。
这可以在mysql中做吗?
说我有
ID | PRODUCT
1 | Apples
1 | Oranges
1 | Bananas
2 | Walnuts
2 | Almonds
3 | Steak
3 | Chicken
这可以在 MySQL 中进行这种类型的设置吗?我创建了一个测试表,并创建了一个带有主索引和自动递增的 ID 列。当我尝试插入几行都具有相同的 ID 时,mysql 返回一个错误。
这可以在mysql中做吗?
当您设置为主键时,重复记录(ID)如何?基本上不会。主键是. 如果您希望记录是这样的,请创建另一列作为您的主键INSERTED
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
只能出现一次。如果ID
每个都有自定义product
,则使用复合主键(id, product)
或代理键。代理键将是唯一标识行的自动递增列。您的表格将如下所示:
CREATE TABLE fruits (
auto_id int AUTO_INCREMENT PRIMARY KEY,
id int,
product varchar(15))
您不能为 ID 列创建主键,因为这意味着它是唯一的。只需为您的示例使用普通索引即可。
另一方面,在大多数情况下,有一个主键是有意义的,所以我建议添加一个带有正常索引的第三行(GENRE?),并保持主键不变。
插入数据时,只需要插入GENRE和PRODUCT,ID就会自动填写。