2010-12-07 52 views
1

我很抱歉,如果"link"不是這個提前的確切期限。MySQL鏈接表 - 查看,外鍵或觸發器?

我有一個用戶信息表(用戶&密碼)。我需要相同的用戶:密碼對才能出現在同一個數據庫的另一個表中。第二個表需要始終複製第一個表 - 如果從第一個表中刪除條目或添加條目 - 則更改必須立即應用於第二個表。

請,我需要的是如何可以做到這一點的例子,因爲我不知道的術語對谷歌搜索..


我只需要兩列是一個重複的,而不是整個表。

+0

我對這件事發生Unreason - 爲什麼要維護重複的信息?立即添加到第二個副本並從第二個副本中刪除似乎不起任何作用。 – Mike 2010-12-07 13:23:40

+0

我剛剛解釋說,在Unreason的帖子 – DreamWave 2010-12-07 13:25:45

+0

我認爲你正在尋找外鍵。使用正確的級聯選項將引用第一個表的外鍵添加到第二個表,這就是您所需要的。在這種情況下複製任何數據是不可接受的。在MySQL的情況下,你將不得不使用InnoDB存儲引擎才能工作(MyISAM不支持數據庫完整性功能,例如外鍵)。 – 2010-12-07 15:16:34

回答

5

一個view可能工作取決於您現有系統施加的限制,以及那些imposed by views。它可以節省重複的數據:

CREATE TABLE web_users (username VARCHAR(255), password VARCHAR(255)); 

CREATE VIEW forum_users AS SELECT username, password FROM web_users; 

INSERT INTO web_users VALUES ('user1', 'password1'); 

SELECT * FROM forum_users; 
+----------+-----------+ 
| username | password | 
+----------+-----------+ 
| user1 | password1 | 
+----------+-----------+ 

INSERT INTO forum_users VALUES ('user2', 'password2'); 

SELECT * FROM forum_users; 
+----------+-----------+ 
| username | password | 
+----------+-----------+ 
| user1 | password1 | 
| user2 | password2 | 
+----------+-----------+ 

SELECT * FROM web_users; 
+----------+-----------+ 
| username | password | 
+----------+-----------+ 
| user1 | password1 | 
| user2 | password2 | 
+----------+-----------+ 
2

這可以通過觸發器來完成。

真正的問題是爲什麼你想要在數據庫中有重複的信息。

+1

用於查詢重複信息。 – Mike 2010-12-07 13:20:56

1

使用storage engine as INNODB in mysql,做索引它