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

crea tabella con unione selezionata non ha vincoli

Usando select ... as ... per creare una tabella mai copia vincoli. Se vuoi che la nuova tabella erediti i vincoli dalle tabelle originali, devi creare i nuovi vincoli manualmente.

Come sottolinea @Davek, not null i vincoli verranno copiati da una singola tabella select ... as ... . Immagino che sia perché sono sia attributi che vincoli di colonna. Tuttavia, una volta che la colonna ha più di una fonte, è ragionevole che Oracle non tenti di applicare tale vincolo.

In risposta alla domanda di follow-up "sarebbe possibile fornire tableC gli stessi vincoli da tableA o tableB , dopo un CTA?":

Ovviamente è possibile, ma non esiste un unico comando per farlo. Potresti scrivere una procedura che utilizzasse SQL dinamico per copiare i vincoli. Tuttavia, a meno che tu non stia cercando di automatizzare questo comportamento, generalmente sarà più semplice estrarre il DDL utilizzando un IDE e cambiare il nome della tabella.