2014-01-18 78 views
-1

我使用了以下兩個查詢。列被添加到表中,但第二個查詢不起作用。將外鍵添加到列失敗

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

我在想什麼?

+1

「*不*工作」 是不可接受的錯誤描述。 –

+0

您可以添加「庫存」表格說明嗎? –

+0

名稱\t VARCHAR(45)\t NO \t \t \t 價格\t浮子\t NO \t \t \t 類別\t VARCHAR(45)\t NO \t \t未知\t DATED \t日期時間\t NO \t \t \t 斯諾\t INT(11) \t NO \t UNI \t \t auto_increment – VijayaRagavan

回答

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 
+0

alter table rooms添加列productid int not null,添加外鍵(productid)引用stock(productid)刪除級聯;這個語法正確嗎? – VijayaRagavan

+0

看到我編輯的答案 –

+0

工作正常。謝謝朋友。 – VijayaRagavan

2

用途:

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

這是我嘗試過的朋友。 – VijayaRagavan

+0

在表中使用新列時,不要使用列關鍵字,並且如果表中已有數據,則不能插入空列。有輕微的修改。 –