Credo che la query seguente funzioni, non l'ho testata!
INSERT INTO Test (b)
SELECT * FROM
(
SELECT 'z' FROM dual
UNION ALL
SELECT 'zz' FROM dual
);
Non sono sicuro, se ti può aiutare in qualche modo.
Per, GENERATED ALWAYS AS IDENTITY Oracle utilizza internamente solo una sequenza. E le opzioni sulla sequenza generale si applicano anche a questo.
NEXTVAL è usato per recuperare la successiva sequenza disponibile, e ovviamente è una pseudocolonna.
Quanto segue è di Oracle
Non puoi usare CURRVAL e NEXTVAL nei seguenti costrutti:
- Una sottoquery in un
DELETE,SELECToUPDATEdichiarazione - Una query su una vista o su una vista materializzata
- Un'istruzione SELECT con l'operatore DISTINCT
- Un'istruzione SELECT con una clausola GROUP BY o una clausola ORDER BY
- Un
SELECTistruzione combinata con un altroSELECTdichiarazione con UNION,INTERSECToMINUSoperatore di impostazione - La clausola WHERE di un'istruzione SELECT
- Valore DEFAULT di una colonna in un'istruzione CREATE TABLE o ALTER TABLE
- La condizione di un vincolo CHECK
La subquery e SET la regola delle operazioni sopra dovrebbe rispondere alla tua domanda.
E per il motivo di NULL, quando pseudocolumn (ad es. NEXTVAL) viene utilizzato con un'operazione SET o qualsiasi altra regola sopra menzionata, l'output è NULL, poiché Oracle non è stato in grado di estrarli in effetti combinando più selezioni.
Vediamo la query qui sotto,
select rownum from dual
union all
select rownum from dual
il risultato è
ROWNUM
1
1