mysql - 使两列成为主键

标签 mysql

您好,我有一个表,其中有一个名为 ImageID 的主键,我想创建另一列

也是主键,PropertyID 表示复合键

这是代码,但它向我显示了此错误“#1064 - 您的 SQL 语法有错误;请检查与您的 MySQL 服务器版本相对应的手册,以了解在 '( 附近使用的正确语法PropertyID INT, ImageID INT 主键 (PropertyID, ImageID) )' 在行“

此外,ImageID 已经是主键,但具有 varchar(15) 规范。

Alter TABLE properties (
  PropertyID INT,
  ImageID INT,
  primary key (PropertyID, ImageID)
);

最佳答案

每个表只能有1个主键。您只能有一个主键,但主键中可以有多个列。

取自 W3Schools:

CREATE TABLE Persons
(
P_Id int NOT NULL,
LastName varchar(255) NOT NULL,
FirstName varchar(255),
Address varchar(255),
City varchar(255),
CONSTRAINT pk_PersonID PRIMARY KEY (P_Id,LastName)
)

此处唯一的主键是 pk_PersonID,但已声明 pk_PersonID 由 P_Id 和 LastName 组成。

唯一索引可能就是您正在寻找的。这意味着需要唯一的值,并且像索引一样运行,因为它可以加快查询速度。

关于mysql - 使两列成为主键,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23453098/

相关文章:

python - 如何用另一种方法实现mysql left join?

php - Laravel5) 如何通过查询生成器存储特定列的平均值

mysql - 如何将所有查询命令和输出保存到 .sql 文件中?

php - 更新表 mysql & php

MySQL按月汇总并运行总计

php - 通过php在mysql中创建数据库时出现访问被拒绝错误

mysql - 如何从每个类别中获得前 40% 的销售贡献者?

mysql - 选择一个子查询

java - 在创建连接池时为mysql配置时间戳

php - 如何获取很久以前提出的查询的 ID 并将其发布到另一个表?