w999d
@w999d
Web-developer

Ключи и триггеры postgresql. Что для чего лучше использовать?

Спрашиваю как нуб в posgresql, пришедший из лесов mysql.

Есть 2 таблицы:
[conversation диалоги]
id
last_message_id
message_counter

[message сообщения]
id
conversation_id

При удалении диалога, должны удаляться сообщения - это я полагаю, проще всего и выглядит как FOREIGN KEY (conversation_id) REFERENCES conversation(id) с CASCADE на ON DELETE
При добавлении/удалении сообщения, должен меняться last_message_id - вероятно, триггер? или можно сделать как-то автообновление через представления(view)?
При добавлении увеличиваться (именно увеличиваться, а не пересчитываться - при удалении не меняется) message_counter - вероятно, триггер?
  • Вопрос задан
  • 2518 просмотров
Решения вопроса 1
leahch
@leahch
3D специалист. Dолго, Dорого, Dерьмово.
По моему, триггеры - зло! Если уж и пользовать триггеры, то только для валидации данных. Иначе, при больших нагрузках, можете получить непредсказуемое поведение системы, дидлоки, деградацию производительности.
В вашем же случае поля last_message_id и message_counter можно вычислять дополнительными запросами и в таблице им вообще нечего делать, просто сделайте индекс.
Готов к дискуссии!
Ответ написан
Пригласить эксперта
Ответы на вопрос 1
да, нужно два триггера на добавление и удаление
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы