2009-11-28 74 views
1

我有一個名爲'members'和'users'的2表,它們都有2列:名稱&性別。我想是我每次添加一個新的名字「成員表中,排在「性別」列中的值會從「用戶」表進行更新:MySql表類型,如何自動將列數據從一個表格繪製到另一個表格?

**users:** 
Emilia - F 
John - M 
David - M 
**members:** 
Synthia - F 

'INSERT INTO members VALUES('David')...or whatever' 
now **members:** 
Synthia - F 
David - M 
+1

在兩個不同的表物理存儲相同的數據(性別欄)違背關係數據庫的正常化原則,並可能導致數據損壞(假設在某一時刻在用戶的值被存儲在所述副本改性在成員不是,這可能會比你的用戶發生性變化更容易混淆^ _ ^) – Rory 2009-11-28 15:01:58

回答

4

你可以使用一個insert trigger。但是,您不應該在兩個不同的表中擁有性別副本 - 它會打破標準化,需要更多存儲空間並且存在兩個副本不同步的風險。

相反,您應該使用外鍵並在需要來自兩者的信息時加入表格。您可以使用用戶名作爲外鍵,或者使用自動增量ID(如果有)。

3

我想你說的是計算列,但我不確定MySQL是否支持它們(谷歌有點,我可能是錯的)。爲什麼不創建一個兩個表的視圖呢?你可以嘗試類似...

CREATE VIEW MemberDetail 
AS 
    SELECT mem.Name, 
    usr.Gender 
    FROM Members mem 
    INNER JOIN Users usr ON mem.Name = usr.Name; 
+0

MySQL自5.0以來支持視圖(但沒有物化視圖) – 2009-11-28 17:22:33

0

INSERT ... SELECT語法怎麼樣?

INSERT into members (name, gender) 
SELECT u.name, u.gender FROM users u WHERE u.name='Cynthia'; 
相關問題