Таблицы ссылок MySQL - просмотр, внешние ключи или триггер? - PullRequest
1 голос
/ 07 декабря 2010

Я прошу прощения, если "link" не является точным термином для этого заранее.

У меня есть таблица с информацией о пользователе (user & password).Мне нужна та же пара пользователь: пароль, чтобы появиться в другой таблице в той же базе данных.вторая таблица должна всегда копировать первую - если запись удалена из первой или добавлена ​​- изменения должны немедленно применяться ко второй таблице.

Пожалуйста, мне нужен пример того, как это можно сделать, так как я не знаю терминологию для поиска в Google., а не всю таблицу.

Ответы [ 5 ]

5 голосов
/ 07 декабря 2010

A представление может работать, в зависимости от ограничений, наложенных вашей существующей системой, и тех ограничений , которые накладываются представлениями .Сохраняет дублирующие данные:

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 голосов
/ 07 декабря 2010

Термин в MySQL называется foreign key.

Для работы

вам понадобится innodb storage engine

детали: http://dev.mysql.com/doc/refman/5.1/en/innodb-foreign-key-constraints.html

Однако использование natural key в качестве foreign key имеет некоторые недостатки,
этот вопрос уже обсуждался: Как выбрать мой первичный ключ?

2 голосов
/ 07 декабря 2010

Этого можно добиться с помощью триггеров.

Реальный вопрос в том, зачем вам иметь дублирующую информацию в базе данных.

1 голос
/ 07 декабря 2010

используйте storage engine as INNODB in mysql и выполните в нем индексацию

1 голос
/ 07 декабря 2010

Эффективным способом реализации такого требования является использование триггера базы данных .

...