MySQL链接表 - 视图,外键还是触发器?

时间:2010-12-07 13:10:45

标签: mysql triggers view foreign-keys

我很抱歉"link"不是事先的确切术语。

我有一个包含用户信息的表格(用户和密码)。我需要相同的用户:密码对出现在同一数据库中的另一个表中。第二个表需要始终复制第一个表 - 如果从第一个表中删除或添加了一个条目 - 更改必须立即应用于第二个表。

请,我需要一个如何做到这一点的例子,因为我不知道在谷歌上搜索的术语..


我只需要两列重复,而不是整个表。

5 个答案:

答案 0 :(得分: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 |
+----------+-----------+

答案 1 :(得分:2)

这可以通过触发器完成。

真正的问题是,为什么要在数据库中包含重复信息。

答案 2 :(得分:2)

mysql中的术语称为foreign key

您需要innodb storage engine才能使用

详细信息:http://dev.mysql.com/doc/refman/5.1/en/innodb-foreign-key-constraints.html

然而,使用natural key作为foreign key有一些缺点,
之前已经讨论过这个问题:How to choose my primary key?

答案 3 :(得分:1)

实施此类要求的有效方法是通过database trigger

答案 4 :(得分:1)

使用storage engine as INNODB in mysql并在其中进行索引