Ci sono due cose che puoi fare (queste sono complementari, non alternative):
- Crea i tuoi vincoli di chiave esterna come DEFERRABLE. Quindi, chiama "SET CONSTRAINTS DEFERRED;", che farà sì che i vincoli di chiave esterna non vengano controllati fino alla fine della transazione. Nota che l'impostazione predefinita se non specifichi nulla è NON RINVIABILE (fastidiosamente).
- Chiama "ALTER TABLE mytable DISABLE TRIGGER ALL;", che impedisce l'esecuzione di trigger durante il caricamento dei dati, quindi "ALTER TABLE mytable ENABLE TRIGGER ALL;" quando hai finito per riattivarli.