为什么在尝试使用外键约束更改表时会出现错误?
我有1台,HSTORY
这是我作为一个基础表中使用的所有其他特定历史记录表(即USER_HISTORY
,BROWSER_HISTORY
,PICTURE_HISTORY
...).我也包括了PICTURE
和USER
它们被调用的表格.
历史表:
CREATE TABLE IF NOT EXISTS HISTORY
(
ID INT NOT NULL AUTO_INCREMENT,
VIEWERID INT NOT NULL ,
VIEWDATE TIMESTAMP NOT NULL DEFAULT NOW(),
PRIMARY KEY (ID),
FOREIGN KEY (VIEWERID) REFERENCES USER(ID)
)
engine=innodb;
Run Code Online (Sandbox Code Playgroud)
USER表:(如果有人好奇的话)
CREATE TABLE IF NOT EXISTS USER
(
ID INT NOT NULL AUTO_INCREMENT,
PRIMARY KEY (ID)
)
engine=innodb;
Run Code Online (Sandbox Code Playgroud)
PICTURE表:(如果有人好奇的话)
CREATE TABLE IF NOT EXISTS PICTURE
(
ID INT NOT NULL AUTO_INCREMENT,
PRIMARY KEY (ID)
)
engine=innodb;
Run Code Online (Sandbox Code Playgroud)
PICTURE_HISTORY表:
CREATE TABLE IF NOT EXISTS PICTURE_HISTORY LIKE HISTORY;
ALTER TABLE PICTURE_HISTORY
ADD FOREIGN KEY (FOREIGNID) REFERENCES PICTURE(ID);
Run Code Online (Sandbox Code Playgroud)
但是,当我这样做时,我得到:
Key column 'FOREIGNID' doesn't exist in table
Run Code Online (Sandbox Code Playgroud)
我认为这意味着我必须首先创建FOREIGNID
,但在SO的许多示例中,上述应该有效.有人知道为什么会这样吗?
puk*_*puk 26
感谢迈克尔指出我的错误.除非列已经存在,否则我实际上无法创建外键.如果我发出这两个命令,则创建外键约束:
ALTER TABLE PICTURE_HISTORY
ADD COLUMN FOREIGNID INT NOT NULL;
ALTER TABLE PICTURE_HISTORY
ADD FOREIGN KEY (FOREIGNID) REFERENCES PICTURE(ID);
Run Code Online (Sandbox Code Playgroud)
小智 8
您可以使用逗号组合mysql的命令,如下所示:
ALTER TABLE PICTURE_HISTORY
ADD COLUMN FOREIGNID INT NOT NULL,
ADD FOREIGN KEY (FOREIGNID) REFERENCES PICTURE(ID);
Run Code Online (Sandbox Code Playgroud)
归档时间: |
|
查看次数: |
47730 次 |
最近记录: |