引用

2013-10-04 28 views
0
TableA: 
ID  NAME 

0  Thomas 
1  Johnson 
2  Harry 

TableB: 

ID  IDA  ANAME 
0  2  Harry 
1  0  Thomas 
2  1  Johnson 

我上引用的「表A」,「ID」列「IDA」創造「表B」的外鍵在國外行特定的列,具有以下:引用

FOREIGN KEY (IDA) REFERENCES TableA(ID) 

對於「TableB」中的給定行,我可以獲得由上述約束定義的「TableA」中的對應行。那麼如何確保「TableB」中特定行的「ANAME」在「TableA」的相應行中具有「NAME」的值?我試過以下,但不幸的是它被證明是無效的(缺少邏輯近「ANAME」錯誤)

FOREIGN KEY (IDA) REFERENCES TableA(ID) ON UPDATE SET ANAME = TableA.Name 

回答

3

簡短的回答 - 跨表的數據複製是幾乎從來沒有一個好主意,所以纔不去做。

使用的ID列的外鍵從表A獲取你的名字時,你需要他們,所以不是

SELECT id, ida, aname 
    FROM TableB; 

使用

SELECT b.id, b.ida, a.name AS aname 
    FROM TableB b 
    JOIN TableA ON b.ida = a.id;