Может ли VIEW в MySQL читать из одной таблицы и сохранять в другой? - PullRequest
0 голосов
/ 01 декабря 2011

Есть ли в MySQL что-то вроде aufs? Я хочу использовать свои рабочие таблицы только для чтения и, если возможно, сохранять изменения в другой таблице или базе данных.

Спасибо !!

Ответы [ 2 ]

0 голосов
/ 01 декабря 2011

В других реализациях SQL (например, SQL Server) триггер INSTEAD OF на VIEW может достичь цели чтения из одной таблицы и записи в другую.Тем не менее, MySQL, насколько мне известно, не поддерживает INSTEAD OF триггеров.

0 голосов
/ 01 декабря 2011

Есть ли в MySQL что-то похожее на aufs?

Нет

Опция 1 - Использовать репликацию

Вы можете разместить рабочую базу данных (только для чтения) на одном сервере и базу данных измененийна другом сервере (может быть на том же компьютере).
Если вы установите базу данных изменений в качестве ведомой производственной базы данных, все происходящие изменения (возможно, из другого источника) будут реплицированы в вашу базу данных изменений.
Изменения в базе данных изменений не будут переданы в рабочую базу данных.

Тот факт, что база данных изменений не синхронизирована с производственной базой данных, может вызвать проблемы с (односторонней) синхронизацией, но вам придется поэкспериментировать с этим.

См .: http://dev.mysql.com/doc/refman/5.0/en/replication.html

Вариант 2 - грязный хак с триггерами

Вы можете поставить триггер на свой рабочий стол и иметь расхождение триггераданные куда-то еще.
предупреждение это грязный хак и вообще не рекомендуется использовать триггеры.

DELIMITER $$

CREATE TRIGGER bu_prod_table1_each BEFORE UPDATE ON prod_table1 FOR EACH ROW
BEGIN
  UPDATE change_table1 c SET c.field1 = NEW.field1, c.field2 = NEW.field2 
    WHERE c.id = OLD.id;
  IF NEW.id <> OLD.id THEN
    UPDATE change_table1 SET c.id = NEW.id WHERE c.id = OLD.id;
  END IF;
  /*reverse the changes in the production table*/
  SET NEW.id = OLD.id;
  SET NEW.field1 = OLD.field;
  .....
END $$

DELIMITER ;

Вам нужно создать эти триггеры для ОБНОВЛЕНИЯ,УДАЛИТЬ и ВСТАВИТЬ.
И вам придется ставить триггеры на каждую таблицу в производстве.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...