Voglio disattivare tutti i vincoli di chiave esterna e riattivarli dopo, c'è un modo per farlo?Come disattivare temporaneamente tutti i vincoli in una tabella in Firebird 2.1?
So che SQLServer lo consente, ma che dire di Firebird?
Voglio disattivare tutti i vincoli di chiave esterna e riattivarli dopo, c'è un modo per farlo?Come disattivare temporaneamente tutti i vincoli in una tabella in Firebird 2.1?
So che SQLServer lo consente, ma che dire di Firebird?
Le chiavi esterne AFAICT non possono essere disabilitate in Firebird fino a 2.1.
Dovresti lasciarli e ricrearli.
C'è un similar thread su Devshed.
Immagino che l'unico modo sia quello di abbandonare e poi ricrearli. Dato che i vincoli non sono dati, in realtà non perdi alcuna informazione dal database, quindi è un'operazione innocua (a patto che tu mantenga lo script per ricrearli successivamente).
La versione di FlameRobin nel repository SVN ha un'opzione per generare automaticamente gli script DROP e CREATE per le dipendenze della colonna di tabella selezionate. L'ultima versione ufficiale ha la stessa opzione per le tabelle intere, quindi potrebbe aiutarti. Non vi è alcuna possibilità di farlo per l'intero database, però. Forse qualche altro amministratore. lo strumento ha questa caratteristica.
+1. Con uno strumento che mostra le tabelle di sistema si può vedere che non vi è alcun campo in RDB $ RELATION_CONSTRAINTS che consentirebbe di disabilitare i vincoli di chiave esterna. Gli indici OTOH possono essere resi inattivi e RDB $ INDICES ha un campo RDB $ INDEX_INACTIVE. – mghie
Sì, ma gli indici che supportano i vincoli non possono essere disattivati. Provare a farlo risulta in un errore. –