Что эквивалентно черной дыре? - PullRequest
1 голос
/ 13 октября 2011

Я начинаю новый проект в postgreSQL (последний) , немного поработав с MySQL 5.5.

В прошлом я широко использовал таблицу blackhole для упрощения кода моего приложения.
Это позволяет мне сделать одну вставку в коде приложения:

INSERT INTO blackhole1 (val1, val2, val3, val4 ...

CREATE TRIGGER ai_blackhole1_each AFTER INSERT ....
BEGIN
  INSERT INTO table1 (....
  INSERT INTO table2 (....
  INSERT INTO log (.....

И есть триггер в таблице чёрной дыры, который вставляет значения в разные таблицы.

Что я использую в postgreSQL для замены этой функциональности?

Я знаю, что могу использовать хранимую процедуру, но это означает, что я не могу подключить элементы управления с учетом данных к
черной таблице. Поэтому мне бы хотелось, чтобы флешка была как можно ближе к оригиналу MySQL.

1 Ответ

3 голосов
/ 14 октября 2011

С PostgreSQL 9.1 вы можете создавать триггеры так же, как вы делаете это с MySQL.Обратите внимание, что невозможно создать триггеры для представлений в версиях до 9.1.

Используете ли вы механизм хранения BLACKHOLE для таблиц blackhole в MySQL или это просто имя?В PostgreSQL нет подключаемых модулей хранения, но вы можете получить то же поведение, что и с механизмом хранения BLACKHOLE в MySQL с триггерами INSTEAD OF для представления в PostgreSQL.Я не совсем понимаю вашу точку зрения относительно элементов управления данными : на самом деле, у вас нет данных в таблице BLACKHOLE (механизм хранения), но с другойКонечно, вы можете, например, сопоставить спящий объект с представлением базы данных.

Хорошая или плохая идея использовать триггеры для упрощения кода приложения, зависит от фактического варианта использования.Например, я предпочитаю триггеры, а не логику приложения для ведения журнала и аудита, потому что этот подход предлагает единое решение для разных приложений, подключающихся к базе данных, а также для специальных запросов / заявлений администратора.Но из моего опыта триггеры не убирают сложность, а просто переносят ее на уровень базы данных.Как правило, это усложняет расширение и поддержку многослойного приложения.

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