要将外键定义为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)
)