La regola pratica è usare CHECK vincolo quando possibile.
Un CHECK il vincolo è più veloce, più semplice, più portabile, richiede meno codice ed è meno soggetto a errori. I trigger possono essere facilmente aggirati da altri trigger, ad esempio.
Un TRIGGER è più complicato. Usalo quando devi , per esigenze più complesse.
Se un CHECK il vincolo è troppo restrittivo per il tuo caso o causa problemi nel ricaricare un dump, potresti utilizzare il NOT VALID modificatore come via di mezzo (Postgres 9.2+). E, facoltativamente, VALIDATE dopo. Vedi:
- Disabilita tutti i vincoli e i controlli delle tabelle durante il ripristino di un dump