Oracle
 sql >> Datenbank >  >> RDS >> Oracle

create table with select union hat keine Einschränkungen

Mit select ... as ... um nie eine Tabelle zu erstellen Kopien Beschränkungen. Wenn Sie möchten, dass die neue Tabelle Einschränkungen von den ursprünglichen Tabellen erbt, müssen Sie die neuen Einschränkungen manuell erstellen.

Wie @Davek betont, not null Einschränkungen werden aus einer einzelnen Tabelle kopiert select ... as ... . Ich denke, das liegt daran, dass sie sowohl Spaltenattribute als auch Einschränkungen sind. Sobald die Spalte jedoch mehr als eine Quelle hat, ist es vernünftig, dass Oracle nicht versucht, diese Einschränkung anzuwenden.

Als Antwort auf die Folgefrage "Wäre es möglich, tableC die gleichen Einschränkungen entweder von tableA oder tableB , nach einem CTA?":

Natürlich ist es möglich, aber es gibt keinen einzigen Befehl dafür. Sie könnten eine Prozedur schreiben, die dynamisches SQL verwendet, um die Einschränkungen zu kopieren. Sofern Sie dieses Verhalten jedoch nicht automatisieren möchten, ist es im Allgemeinen einfacher, die DDL mithilfe einer IDE zu extrahieren und den Tabellennamen zu ändern.