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