要将外键定义为mysql数据库表中主键的一部分吗

要将外键定义为mysql数据库表中主键的一部分吗,mysql,foreign-keys,primary-key,Mysql,Foreign Keys,Primary Key,这是我的疑问。为什么我会出错 CREATE TABLE researcher( RID INT AUTO_INCREMENT, FIRST_NAME VARCHAR(30), LAST_NAME VARCHAR(30), COUNTRY VARCHAR(30), WORKING_YEAR INT, Experience INT DEFAULT 0, CURRENT_WORK VARCHAR(30) DEFAULT "no entry",

这是我的疑问。为什么我会出错

CREATE TABLE researcher(
    RID INT AUTO_INCREMENT,
    FIRST_NAME VARCHAR(30),
    LAST_NAME VARCHAR(30),
    COUNTRY VARCHAR(30),
    WORKING_YEAR INT,
    Experience INT DEFAULT 0,
    CURRENT_WORK VARCHAR(30) DEFAULT "no entry",
    CONSTRAINT con1 PRIMARY KEY(RID)
)
然后

然后我说:

#1075 - Incorrect table definition; there can be only one auto column and it must be defined as a key

我的错在哪里?

如果使用自动增量,则需要在其上提供主键

范例

CREATE TABLE IF NOT EXISTS reviews
(
    RID INT,
    REVIEW_ID INT AUTO_INCREMENT,
    REVIEW_TIME TIMESTAMP DEFAULT "0000-00-00 00:00:00",
    CONSTRAINT for3 FOREIGN KEY(RID) REFERENCES researcher(RID),
    CONSTRAINT con5 PRIMARY KEY(REVIEW_ID)
)

是的,我也加了。我想通过连接两个属性来添加主键。严格来说,这不是真的。只要第一个节点是自动增量列,就可以有一个复合主键。例如,CONSTRAINT con5主键(REVIEW_ID,rid)在语法和功能上都是正确的(但可能不是op需要或想要的)我建议您在review id上创建主键,并在rid、review\u id上创建唯一键
CREATE TABLE IF NOT EXISTS reviews
(
    RID INT,
    REVIEW_ID INT AUTO_INCREMENT,
    REVIEW_TIME TIMESTAMP DEFAULT "0000-00-00 00:00:00",
    CONSTRAINT for3 FOREIGN KEY(RID) REFERENCES researcher(RID),
    CONSTRAINT con5 PRIMARY KEY(REVIEW_ID)
)