Спровоцировать и проверить ограничения

Я хочу добавить проверку на уровне поля в таблицу. Существует поле с именем "account_number", и это поле всегда должно проходить проверку" luhn". Я нашел функцию под названием "luhn_verify", которая, кажется, работает правильно (google для нее, если вам интересно). Он возвращает логическое значение. Мой вопрос:

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

дополнительные информация:

  • PostgreSQL 9.1
  • таблица в настоящее время не имеет триггера вставки, но имеет обновление.

отказ от ответственности:

Я чувствую, что на это, вероятно, уже ответили, но я не могу найти четкого ответа. Если да, пожалуйста, отметьте как дубликат и ссылку на оригинальный вопрос/ответ.

могут быть лучшие вопросы для платы dba.

1 ответов


эмпирическое правило-использовать CHECK ограничение, прежде чем прибегать к триггерам.

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

триггеры намного сложнее. Используйте их, когда вы обязательно, для более сложных требований.

если CHECK ограничение слишком ограничительное для вашего случая или вызывает проблемы с перезагрузкой дампа, вы можете использовать NOT VALID модификатор как средняя Земля (стр. 9.2+). Подробности: