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

Oracle identitet kolonne og indsæt i vælg

Jeg tror, ​​at nedenstående forespørgsel virker, jeg har ikke testet!

INSERT INTO Test (b)
SELECT * FROM
(
   SELECT 'z' FROM dual
   UNION ALL
   SELECT 'zz' FROM dual
);

Ikke sikker på, om det hjælper dig på nogen måde.

For, GENERERET ALTID SOM IDENTITET Oracle internt bruger kun en Sequence. Og mulighederne for generel Sequence gælder også for dette.

NEXTVAL bruges til at hente den næste tilgængelige sekvens, og det er naturligvis en pseudokolonne.

Nedenstående er fra Oracle

Du kan ikke bruge CURRVAL og NEXTVAL i følgende konstruktioner:

  • En underforespørgsel i en DELETE , VÆLG eller OPDATERING erklæring
  • En forespørgsel efter en visning eller en materialiseret visning
  • En SELECT-sætning med DISTINCT-operatoren
  • En SELECT-sætning med en GROUP BY-sætning eller ORDER BY-sætning
  • En VÆLG sætning, der er kombineret med en anden SELECT sætning med UNION, INTERSECT eller MINUS sæt operatør
  • WHERE-sætningen i en SELECT-sætning
  • STANDARDværdi for en kolonne i en CREATE TABLE- eller ALTER TABLE-sætning
  • Betingelsen for en CHECK-begrænsning

underforespørgslen og SET operationsreglen ovenfor bør besvare dit spørgsmål.

Og af grunden til NULL, når pseudocolumn (f.eks. NEXTVAL) bruges med en SET-operation eller andre regler nævnt ovenfor, outputtet er NULL, da Oracle ikke kunne udtrække dem ved at kombinere flere valg.

Lad os se nedenstående forespørgsel,

select rownum from dual
union all 
select rownum from dual

resultatet er

ROWNUM
1
1



  1. Ydelsesforskel:betingelse placeret ved INNER JOIN vs WHERE-klausul

  2. Et stort dataproblem:hardware eller software ... apparater ...

  3. GROUP BY og aggregerede sekventielle numeriske værdier

  4. proxysql-admin Alternativer - ClusterControl ProxySQL GUI