Oracle
 sql >> база данни >  >> RDS >> Oracle

Колоната за идентичност на Oracle и вмъкнете в select

Вярвам, че заявката по-долу работи, не съм тествал!

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

Не съм сигурен, дали ви помага по някакъв начин.

За, GENERATED ALWAYS AS IDENTITY Oracle вътрешно използва само последователност. И опциите на общата последователност се отнасят и за това.

NEXTVAL се използва за извличане на следващата налична последователност и очевидно е псевдоколона.

По-долу е от Oracle

Не можете да използвате CURRVAL и NEXTVAL в следните конструкции:

  • Подзаявка в DELETE , SELECT , или UPDATE изявление
  • Запитване на изглед или на материализиран изглед
  • Израз SELECT с оператор DISTINCT
  • Израз SELECT с клауза GROUP BY или клауза ORDER BY
  • A SELECT израз, който е комбиниран с друг SELECT изявление със UNION, INTERSECT , или MINUS оператор за настройка
  • Клаузата WHERE на израза SELECT
  • DEFAULT стойност на колона в израз CREATE TABLE или ALTER TABLE
  • Условието на ограничение CHECK

subquery и SET Правилото за операциите по-горе трябва да отговори на вашия въпрос.

И за причината за NULL, когато pseudocolumn (напр. NEXTVAL) се използва с операция SET или други правила, споменати по-горе, изходът е NULL, тъй като Oracle не може да ги извлече на практика с комбиниране на множество избори.

Нека видим по-долу заявката,

select rownum from dual
union all 
select rownum from dual

резултатът е

ROWNUM
1
1



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Как мога да получа достъп до Oracle от Python?

  2. Към какво съпоставя Hibernate булев тип данни, когато се използва база данни на Oracle по подразбиране?

  3. Инструкции стъпка по стъпка за инсталиране на Oracle Virtual Box

  4. Как да получа текущата година, използвайки SQL на Oracle?

  5. Оракул с подзаявка