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

oprette tabel med vælg union har ingen begrænsninger

Brug select ... as ... at oprette en tabel aldrig kopieringsbegrænsninger. Hvis du ønsker, at den nye tabel skal arve begrænsninger fra de originale tabeller, skal du oprette de nye begrænsninger manuelt.

Som @Davek påpeger, not null begrænsninger vil blive kopieret fra en enkelt tabel select ... as ... . Jeg forestiller mig, at det er, fordi de både er kolonneattributter og begrænsninger. Men når først kolonnen har mere end én kilde, er det rimeligt, at Oracle ikke ville forsøge at anvende denne begrænsning.

Som svar på opfølgende spørgsmål "vil det være muligt at give tableC de samme begrænsninger enten fra tableA eller tableB , efter en CTA'er?":

Selvfølgelig er det muligt, men der er ingen enkelt kommando til at gøre det. Du kunne skrive en procedure, der brugte dynamisk SQL til at kopiere begrænsningerne. Medmindre du søger at automatisere denne adfærd, vil det dog generelt være nemmere at udtrække DDL ved hjælp af en IDE og ændre tabelnavnet.




  1. Er matematiske funktioner i MySQL hurtigere end PHP?

  2. Sammensæt grupper i SQL Server

  3. Forøg tabel-id-felt med bitvis optælling

  4. MYSQL får rækker indsat fra i dag