将外键添加到列失败

时间:2014-01-18 11:03:16

标签: mysql

我使用了以下两个查询。该列将添加到表中,但第二个查询不起作用。

 alter table rooms add column productid  int not null;  
 alter table rooms add foreign key(productid) references stock(productid) on delete cascade;

我缺少什么?

2 个答案:

答案 0 :(得分:2)

使用:

alter table rooms add productid  int null;  
 alter table rooms add foreign key(productid) references stock(productid) on delete cascade

答案 1 :(得分:1)

在添加外键之前,您需要在该字段上创建索引。
但是当您创建外键时,由于“NOT NULL”,它将无法工作。实际上,您必须删除“NOT NULL”,填充数据然后写回“NOT NULL”。
另外,rooms.productid和stock.productid必须是同一类型。

试试这个:

alter table rooms add column productid  int
alter table rooms add index (productid)
alter table rooms add foreign key (productid) references stock (productid) on delete cascade