2017-05-18 29 views
0

我有兩個表,一個稱爲用戶,另一個稱爲概要文件。每個表都有一個名爲user_id的列。我想要做的是,當我將一個新用戶插入users表時,我想自動將users表中的新user_id複製到profiles表中。我不想使用UPDATE子句,因爲每次添加新用戶時都必須調用該子句。我認爲關係可以實現我想要做的事情,所以我從配置文件中創建user_id引用用戶的user_id,但它仍然不會自動更新。我該怎麼辦?如果他們不自動更新您的列,首先關係的關鍵點是什麼?如何在mysql中創建另一個列鏡像

+1

您可以在'users'表上使用'AFTER INSERT'觸發器自動插入'profiles'表。 – Barmar

+0

你會在這種情況下觸發INSERT其他相應的行。 – Randy

+0

表之間的關係通常不是一對一的關係,所以自動更新並不合適。另外,如果它自動插入,它將如何知道如何放入其他列? – Barmar

回答

1

這可能是一個設計錯誤。如果這兩個表中的行總是存在相同的ID,則它們應該可能是單個表。

您所創建的外鍵只能保證每一個存在於profiles必須具有相同的ID作爲行users。它不會導致創建這些行 - 這只是意味着如果您嘗試創建一個ID不匹配的行,數據庫將引發錯誤。

這一切都這樣說,它可以創建一個觸發器,完成你描述:

CREATE TRIGGER user_insert_creates_profile 
    AFTER INSERT ON users 
FOR EACH ROW 
    INSERT INTO profile (user_id) VALUES (NEW.user_id); 

但它可能會更好重新考慮你的設計,還是做插入您的應用程序。觸發器是最好的避免。

+0

好的,謝謝!我原本打算將它製作成單個表格,但是那樣會有很多列會使得在cmd中難以閱讀。我想這不是一個大問題。 –

相關問題