我很抱歉"link"
不是事先的确切术语。
我有一个包含用户信息的表格(用户和密码)。我需要相同的用户:密码对出现在同一数据库中的另一个表中。第二个表需要始终复制第一个表 - 如果从第一个表中删除或添加了一个条目 - 更改必须立即应用于第二个表。
请,我需要一个如何做到这一点的例子,因为我不知道在谷歌上搜索的术语..
我只需要两列重复,而不是整个表。
答案 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
并在其中进行索引