The OpenNET Project / Index page

[ новости /+++ | форум | теги | ]

Каталог документации / Раздел "Базы данных, SQL" / Оглавление документа

7.2 Таблицы MERGE

Таблицы MERGE представляют собой новшество MySQL Version 3.23.25. Их код пока находится в отладке, но в основном уже работает.

Таблица MERGE представляет собой совокупность идентичных таблиц MyISAM, которые могут использоваться как одна. Вы можете выполнять только операции SELECT, DELETE и UPDATE над совокупностью таблиц. Если Вы выполняете DROP для таблицы MERGE, удаляется только определение для таблицы MERGE.

Под идентичными таблицами понимается, что все таблицы созданы с идентичной информацией о ключах и столбцах. Вы не можете помещать MERGE поверх таблиц, где столбцы упакованы по-разному, не имеют точно те же самые столбцы, или имеют ключи в ином порядке. Некоторые из таблиц могут быть сжаты myisampack.

Когда Вы создаете таблицу MERGE, Вы получите файл .frm определения таблицы и файл .MRG списка таблиц. Файл .MRG содержит только список индексных файлов (файлы .MYI), которые должны использоваться как один. Все используемые таблицы должны быть в той же самой базе данных, что и таблица типа MERGE.

Вы должны иметь привилегии SELECT, UPDATE и DELETE на таблицах, которые Вы отображаете на таблицу MERGE.

MERGE-таблицы, могут помогать Вам решить следующие проблемы:

Недостатки таблиц MERGE:

Следующий пример показывает, как использовать таблицы MERGE:

CREATE TABLE t1 (a INT AUTO_INCREMENT PRIMARY KEY, message CHAR(20));
CREATE TABLE t2 (a INT AUTO_INCREMENT PRIMARY KEY, message CHAR(20));
INSERT INTO t1 (message) VALUES ("Testing"),("table"),("t1");
INSERT INTO t2 (message) VALUES ("Testing"),("table"),("t2");
CREATE TABLE total (a INT NOT NULL, message CHAR(20), KEY(a)) TYPE=MERGE UNION=(t1,t2);

Обратите внимание, что мы не создавали ключ UNIQUE или PRIMARY KEY в таблице total, поскольку ключ не собирается быть уникальным в таблице total.

Обратите внимание, что Вы можете также управлять файлом .MRG вне сервера MySQL:

shell> cd /mysql-data-directory/current-database
shell> ls -1 t1.MYI t2.MYI > total.MRG
shell> mysqladmin flush-tables

Теперь Вы можете делать следующее:

mysql> select * from total;
+---+---------+
| a | message |
+---+---------+
| 1 | Testing |
| 2 | table   |
| 3 | t1      |
| 1 | Testing |
| 2 | table   |
| 3 | t2      |
+---+---------+

Чтобы повторно отобразить таблицу MERGE, Вы можете делать одно из следующего:




Партнёры:
PostgresPro
Inferno Solutions
Hosting by Hoster.ru
Хостинг:

Закладки на сайте
Проследить за страницей
Created 1996-2024 by Maxim Chirkov
Добавить, Поддержать, Вебмастеру