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
,SELECT
oUPDATE
dichiarazione - 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
SELECT
istruzione combinata con un altroSELECT
dichiarazione con UNION,INTERSECT
oMINUS
operatore 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