将外键添加到现有表

时间:2014-04-06 13:03:10

标签: sql key alter

我忘了添加一个外键列。我尝试了以下操作:

ALTER TABLE GamesTbl
ADD Console varchar(30) NOT NULL,
INDEX (Console), FOREIGN KEY(Console) references ConsolesTbl(ConsoleName) ON DELETE          CASCADE ON UPDATE CASCADE;

编辑:

我首先尝试添加字段,之后就是这样的约束:

ALTER TABLE GamesTbl
ADD Column Console varchar(30);
ADD CONSTRAINT Console FOREIGN KEY (Console)
REFERENCES ConsolesTbl(ConsoleName);

1 个答案:

答案 0 :(得分:1)

似乎您想要添加缺少的列,索引,还要添加外键约束。 AFAIK没有一个命令可以一次性完成这一切。我会以较小的步骤执行此操作:)

另请注意,如果游戏桌中已包含数据,则您无法在不设置默认值的情况下向其中添加NOT NULL列。

以下是一种方法,即将缺少的列添加为NULL,设置数据,然后将其更改为NOT NULL

(我也假设MySql)

ALTER TABLE GamesTbl ADD Console varchar(30) NULL;
ALTER TABLE GamesTbl ADD FOREIGN KEY(Console) references ConsolesTbl(ConsoleName) ON DELETE CASCADE ON UPDATE CASCADE;
CREATE INDEX IX1_GamesConsole ON GamesTbl(Console);

UPDATE GamesTbl SET Console = 'Playstation'; 
ALTER TABLE GamesTbl CHANGE COLUMN Console Console varchar(30) NOT NULL;

SqlFiddle here