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

Вмъкване на множество редове с последователност в Oracle

Ограниченията за многотаблици вмъквания включват:

  • Не можете да посочите последователност в която и да е част от израза за вмъкване с множество таблици. Вмъкването с множество таблици се счита за единичен SQL израз. Следователно първата препратка към NEXTVAL генерира следващото число, а всички последващи препратки в оператора връщат едно и също число.

Това не е съвсем вярно – можете да използвате последователност, тя просто винаги получава една и съща стойност, така че може да бъде полезно да създавате родителски и дъщерни записи наведнъж, като се позовавате на една и съща последователност.

Ако искате да продължите да използвате insert all ти можеш заобиколете това, като използвате недетерминирана функция, която получава стойността на последователността:

CREATE FUNCTION get_seq RETURN NUMBER IS
BEGIN
  RETURN postal_code_seq.nextval;
END;
/

INSERT ALL
  INTO POSTAL_CODE( postal_code,description)
    VALUES(get_seq,'Coimbatore')
  INTO POSTAL_CODE (postal_code,description)
    VALUES(get_seq,'Mumbai') SELECT * FROM DUAL;

2 rows inserted.

SELECT * FROM postal_code;

                            POSTAL_CODE DESCRIPTION        
--------------------------------------- --------------------
                                      1 Coimbatore          
                                      2 Mumbai              

Но това е малко неудобно. Вероятно е по-добре да използвате отделни оператори за вмъкване - използването на многотаблици в една таблица така или иначе не ви печели много - или тригер за задаване на уникалната колона от последователността, или CTE/inline изглед за генериране на стойностите за вмъкване.



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Извеждане от експлоатация на агент в EM13c

  2. Oracle:Как да разбера дали има чакаща транзакция?

  3. Декларация на Oracle, обяснена със съвети и примери

  4. PRVG-2027 Собственикът на файла е непоследователен в различните възли

  5. 2 начина за форматиране на число с водещи нули в Oracle