Jag tror att frågan nedan fungerar, jag har inte testat!
INSERT INTO Test (b)
SELECT * FROM
(
SELECT 'z' FROM dual
UNION ALL
SELECT 'zz' FROM dual
);
Inte säker på om det hjälper dig på något sätt.
För, GENERATED ALWAYS AS IDENTITY
Oracle använder endast en Sequence internt. Och alternativen för allmän sekvens gäller även för detta.
NEXTVAL används för att hämta nästa tillgängliga sekvens, och det är uppenbarligen en pseudokolumn.
Nedanstående är från Oracle
Du kan inte använda CURRVAL
och NEXTVAL
i följande konstruktioner:
- En underfråga i en
DELETE
,SELECT
, ellerUPDATE
uttalande - En fråga om en vy eller en materialiserad vy
- En SELECT-sats med DISTINCT-operatorn
- En SELECT-sats med en GROUP BY-sats eller ORDER BY-sats
- En
SELECT
sats som kombineras med en annanSELECT
sats med UNION,INTERSECT
, ellerMINUS
ställ in operatör - WHERE-satsen i en SELECT-sats
- DEFAULT värde för en kolumn i en CREATE TABLE- eller ALTER TABLE-sats
- Tillståndet för en CHECK-begränsning
subquery
och SET
operationsregeln ovan bör svara på din fråga.
Och av anledningen till NULL, när pseudocolumn
(t.ex. NEXTVAL) används med en SET-operation eller andra regler som nämns ovan, utdata är NULL, eftersom Oracle inte kunde extrahera dem i praktiken genom att kombinera flera val.
Låt oss se frågan nedan,
select rownum from dual
union all
select rownum from dual
resultatet är
ROWNUM
1
1