首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >向现有表添加外键

向现有表添加外键
EN

Stack Overflow用户
提问于 2012-04-05 20:02:38
回答 15查看 751.7K关注 0票数 381

我想向一个名为"katalog“的表中添加一个外键。

代码语言:javascript
复制
ALTER TABLE katalog 
ADD CONSTRAINT `fk_katalog_sprache` 
FOREIGN KEY (`Sprache`)
REFERENCES `Sprache` (`ID`)
ON DELETE SET NULL
ON UPDATE SET NULL;

当我尝试这样做时,我得到了这个错误消息:

错误代码: 1005。无法创建表'mytable.#sql-7fb1_7d3a‘(错误号: 150)

INNODB状态错误:

120405 14:02:57表mytable的外键约束错误。#sql-7fb1_7d3a:

代码语言:javascript
复制
FOREIGN KEY (`Sprache`)
REFERENCES `Sprache` (`ID`)
ON DELETE SET NULL
ON UPDATE SET NULL:
Cannot resolve table name close to:
(`ID`)
ON DELETE SET NULL
ON UPDATE SET NULL

当我使用这个查询时,它是有效的,但是使用了错误的"on delete“操作:

代码语言:javascript
复制
ALTER TABLE `katalog` 
ADD FOREIGN KEY (`Sprache` ) REFERENCES `sprache` (`ID` )

这两个表都是InnoDB,并且都是"INT(11) not null“。我使用的是MySQL 5.1.61。尝试在MacBook专业版上使用MySQL工作台(newest)触发此ALTER查询。

表Create语句:

代码语言:javascript
复制
CREATE TABLE `katalog` (
`ID` int(11) unsigned NOT NULL AUTO_INCREMENT,
`Name` varchar(50) COLLATE utf8_unicode_ci NOT NULL,
`AnzahlSeiten` int(4) unsigned NOT NULL,
`Sprache` int(11) NOT NULL,
PRIMARY KEY (`ID`),
UNIQUE KEY `katalogname_uq` (`Name`)
 ) ENGINE=InnoDB AUTO_INCREMENT=12 DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci ROW_FORMAT=DYNAMIC$$

CREATE TABLE `sprache` (
`ID` int(11) NOT NULL AUTO_INCREMENT,
 `Bezeichnung` varchar(45) NOT NULL,
 PRIMARY KEY (`ID`),
 UNIQUE KEY `Bezeichnung_UNIQUE` (`Bezeichnung`),
KEY `ix_sprache_id` (`ID`)
) ENGINE=InnoDB AUTO_INCREMENT=3 DEFAULT CHARSET=utf8
EN

回答 15

Stack Overflow用户

回答已采纳

发布于 2013-01-10 01:58:55

要将外键(grade_id)添加到现有表(users)中,请执行以下步骤:

代码语言:javascript
复制
ALTER TABLE users ADD grade_id SMALLINT UNSIGNED NOT NULL DEFAULT 0;
ALTER TABLE users ADD CONSTRAINT fk_grade_id FOREIGN KEY (grade_id) REFERENCES grades(id);
票数 640
EN

Stack Overflow用户

发布于 2014-01-28 20:05:48

只需使用这个查询,我已经根据我的场景进行了尝试,并且运行良好

代码语言:javascript
复制
ALTER TABLE katalog ADD FOREIGN KEY (`Sprache`) REFERENCES Sprache(`ID`);
票数 90
EN

Stack Overflow用户

发布于 2016-10-06 14:55:43

简单步骤...

代码语言:javascript
复制
ALTER TABLE t_name1 ADD FOREIGN KEY (column_name) REFERENCES t_name2(column_name)
票数 39
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/10028214

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档