Uważam, że poniższe zapytanie działa, nie testowałem!
INSERT INTO Test (b)
SELECT * FROM
(
SELECT 'z' FROM dual
UNION ALL
SELECT 'zz' FROM dual
);
Nie jestem pewien, czy to ci w jakikolwiek sposób pomoże.
Dla, GENERATED ALWAYS AS IDENTITY
Oracle wewnętrznie używa tylko sekwencji. W tym przypadku obowiązują również opcje dotyczące ogólnej Sekwencji.
NEXTVAL służy do pobrania następnej dostępnej sekwencji i oczywiście jest to pseudokolumna.
Poniżej pochodzi z Oracle
Nie możesz użyć CURRVAL
i NEXTVAL
w następujących konstrukcjach:
- Podzapytanie w
DELETE
,SELECT
lubUPDATE
oświadczenie - Zapytanie widoku lub widoku zmaterializowanego
- Oświadczenie SELECT z operatorem DISTINCT
- Oświadczenie SELECT z klauzulą GROUP BY lub ORDER BY
SELECT
instrukcja, która jest połączona z innymSELECT
oświadczenie z UNION,INTERSECT
lubMINUS
ustaw operatora- Klauzula WHERE instrukcji SELECT
- wartość DOMYŚLNA kolumny w instrukcji CREATE TABLE lub ALTER TABLE
- Warunek ograniczenia CHECK
subquery
i SET
Powyższa reguła operacji powinna odpowiedzieć na Twoje pytanie.
I z powodu NULL, gdy pseudocolumn
(np. NEXTVAL) jest używany z operacją SET lub innymi wymienionymi powyżej regułami, wynik ma wartość NULL, ponieważ Oracle nie może ich wyodrębnić w efekcie łączenia wielu wyborów.
Zobaczmy poniższe zapytanie,
select rownum from dual
union all
select rownum from dual
wynik to
ROWNUM
1
1