我有一個表USERS
user_id
作爲主鍵和user_name
。Sql簡單初學者操作
我有另一個表USERS_ACT
與user_act_id
主鍵,user_act_user_id
和另外2列。
我需要user_act_user_id
作爲外鍵USERS
?我怎樣才能做到這一點?
這是我在SQL的第一天,所以請善待解釋我所問的是否是錯誤的。
我有一個表USERS
user_id
作爲主鍵和user_name
。Sql簡單初學者操作
我有另一個表USERS_ACT
與user_act_id
主鍵,user_act_user_id
和另外2列。
我需要user_act_user_id
作爲外鍵USERS
?我怎樣才能做到這一點?
這是我在SQL的第一天,所以請善待解釋我所問的是否是錯誤的。
讓我們假設你是不是DB管理員,你只是想獲得的所有活躍用戶的名字;))
select users.user_name
from users
join users_act on users.user_id = users_act.user_act_user_id
這實際上是我需要的。 – Fofole 2012-03-06 09:58:59
沒有參考性的完整性,它取決於你使它工作,它周圍沒有「魔法」。
使用來自USERS的pk值填充您的user_act_user_id,您就擁有了它。
您可能要添加約束,但可能不是你問什麼, http://msdn.microsoft.com/en-us/library/ms175464.aspx
總之,他們保持良好的狀態表之間的鍵。
這取決於你的數據庫類型如果MySQL甚至支持外鍵。例如,您可以使用InnoDB格式的外鍵,但不能使用MyIsam格式的外鍵。 在使用MySql時,我個人更喜歡使用MyIsam,並在編程時做大部分關於完整性的檢查。 一般而言,您可以在表USERS中添加user_act_user_id,但不將其標記爲任何鍵。之後,您可以簡單地使用JOIN,但由於沒有給出參考完整性,所以如果您想要f.e.則必須在編程站點上編寫自己的「觸發器」。自動刪除屬於另一個表中用戶的數據。否則,你必須使用約束或觸發器,但是這在使用SQL開始時可能並不那麼容易。
假設你正使用InnoDB(這是唯一支持外鍵的唯一引擎):
ALTER TABLE users_act
ADD CONSTRAINT fk_users_act_users
FOREIGN KEY (user_act_user_id)
REFERENCES users (user_id);
什麼你的數據庫引擎? – silly 2012-03-06 09:32:54
mysql和我使用dbvisualizer來處理它。 – Fofole 2012-03-06 09:33:37