sql >> Databáze >  >> RDS >> Oracle

Sloupec identity Oracle a vložte do select

Věřím, že níže uvedený dotaz funguje, netestoval jsem!

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

Nejsem si jistý, jestli vám to nějak pomůže.

Pro, GENERATED ALWAYS AS IDENTITY Oracle interně používá pouze sekvenci. A také na to platí možnosti obecné sekvence.

NEXTVAL se používá k načtení další dostupné sekvence a zjevně jde o pseudosloupec.

Níže uvedené je od společnosti Oracle

Nemůžete použít CURRVAL a NEXTVAL v následujících konstrukcích:

  • Poddotaz v DELETE , SELECT nebo UPDATE prohlášení
  • Dotaz na pohled nebo materializovaný pohled
  • Příkaz SELECT s operátorem DISTINCT
  • Příkaz SELECT s klauzulí GROUP BY nebo klauzuli ORDER BY
  • A SELECT příkaz, který je kombinován s jiným SELECT příkaz s UNION, INTERSECT nebo MINUS nastavit operátor
  • Klauzule WHERE příkazu SELECT
  • VÝCHOZÍ hodnota sloupce v příkazu CREATE TABLE nebo ALTER TABLE
  • Podmínka omezení CHECK

subquery a SET výše uvedené pravidlo operací by mělo odpovědět na vaši otázku.

A z důvodu NULL, když pseudocolumn (např. NEXTVAL) se používá s operací SET nebo jakýmikoli jinými pravidly uvedenými výše, výstup je NULL, protože Oracle je nemohl extrahovat kombinováním více výběrů.

Podívejme se na níže uvedený dotaz,

select rownum from dual
union all 
select rownum from dual

výsledkem je

ROWNUM
1
1



  1. Jak TRIM_ORACLE() funguje v MariaDB

  2. Může dojít k uváznutí se stejnou metodou přístupu?

  3. Použití SQLCipher s Androidem

  4. Výukový program ovládání Activex ListView-01