2013-08-30 42 views
0

我試圖恢復一些舊的數據庫表,當我構建它們時,我沒有使用外鍵。我有與外鍵相對應的字段,但是我沒有在關聯表中將它設置爲與它連接的表。在mysql表中實現外鍵

知道我有一個問題,因爲如果我嘗試添加該關係,它不能,因爲在另一個表中刪除了一些行。

是否有任何用於檢查此類型的mysql命令NULL關係爲我刪除我不需要的行..並在最後..添加關係。

 
TableA 
    id, 
    name 

TableB 
    id, 
    tableA_id, 
    points 

我刪除了一些TableA行..現在我不能有這種關係。

任何需要幫助的mysql命令,還是需要手動檢查?

感謝

回答

1

假設你有PRIMARY KEY約束至少在TableA.id你可以嘗試

-- Delete all orphaned records from TableB 
DELETE b 
    FROM tableb b LEFT JOIN tablea a 
    ON b.a_id = a.id 
WHERE a.id IS NULL; 
-- Create a FK constraint 
ALTER TABLE TableB 
ADD CONSTRAINT fk_a_id FOREIGN KEY (a_id) REFERENCES tablea(id); 

這裏是SQLFiddle演示