Oracle
 sql >> Database >  >> RDS >> Oracle

ottenendo l'errore ORA-00907 durante la creazione di una tabella nello sviluppatore sql

Presumo che tu stia cercando di assicurarti che il Book i record vengono aggiornati ogni volta che modifichi il Pname colonna nel Publisher tabella, ma Oracle non ha on update cascade .

Vedi qui per il diagramma sintattico dei references clausola.

Per modificare le chiavi primarie in Oracle, hai alcune opzioni:

  • Rinvia il vincolo (chiave esterna) controlla fino al commit, quindi aggiorna sia il genitore che il figlio all'interno della transazione.

  • Crea un nuovo genitore con i dettagli aggiornati, quindi vai a cambiare tutti i figli, quindi elimina il genitore originale. Tutto in una transazione ovviamente.

  • Smetti di usare i dati mutevoli come chiave. Ci è voluto molto tempo prima che i DBA mi convincessero che le chiavi artificiali (surrogate) dovrebbero essere utilizzate piuttosto che i dati veri, ma questo è stato il caso d'uso che alla fine mi ha convinto. L'uso di una chiave artificiale (che non deve mai cambiare) significa che questo problema scompare completamente.