sql >> Database >  >> RDS >> Oracle

tabel maken met select union heeft geen beperkingen

Gebruik select ... as ... om een ​​tabel te maken nooit kopieerbeperkingen. Als u wilt dat de nieuwe tabel beperkingen overneemt van de originele tabellen, moet u de nieuwe beperkingen handmatig maken.

Zoals @Davek aangeeft, not null beperkingen worden gekopieerd uit een enkele tabel select ... as ... . Ik kan me voorstellen dat dat komt omdat het zowel kolomattributen als beperkingen zijn. Als de kolom echter meer dan één bron heeft, is het redelijk dat Oracle niet zou proberen die beperking toe te passen.

Als antwoord op de vervolgvraag "is het mogelijk om tableC dezelfde beperkingen ofwel van tableA of tableB , na een CTA's?":

Natuurlijk is het mogelijk, maar er is geen enkel commando om het te doen. Je zou een procedure kunnen schrijven die dynamische SQL gebruikt om de beperkingen te kopiëren. Tenzij u dit gedrag echter wilt automatiseren, is het over het algemeen gemakkelijker om de DDL uit te pakken met een IDE en de tabelnaam te wijzigen.




  1. ORA-00913:te veel waarden tijdens het gebruik van case when

  2. Maak en importeer mysql-database op gedeelde host in php

  3. MySQL-volgorde op twee waarden

  4. MySQL select distinct werkt niet