Oracle
 sql >> Teknologi Basis Data >  >> RDS >> Oracle

Memasukkan beberapa baris dengan urutan di Oracle

Batasan pada sisipan multitable meliputi:

  • Anda tidak dapat menentukan urutan di bagian mana pun dari pernyataan penyisipan multitabel. Sisipan multitabel dianggap sebagai pernyataan SQL tunggal. Oleh karena itu, referensi pertama ke NEXTVAL menghasilkan nomor berikutnya, dan semua referensi berikutnya dalam pernyataan mengembalikan nomor yang sama.

Itu tidak sepenuhnya benar - Anda dapat menggunakan urutan, hanya saja selalu mendapat nilai yang sama, sehingga dapat berguna untuk membuat catatan induk dan anak sekaligus dengan mengacu pada urutan yang sama.

Jika Anda ingin terus menggunakan insert all kamu bisa mengatasinya dengan menggunakan fungsi non-deterministik yang mendapatkan nilai urutan:

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              

Tapi itu agak canggung. Anda mungkin lebih baik menggunakan pernyataan penyisipan individual - menggunakan penyisipan multitabel ke dalam satu tabel tidak benar-benar memberi Anda banyak keuntungan - atau pemicu untuk mengatur kolom unik dari urutan, atau tampilan CTE/inline untuk menghasilkan nilai untuk menyisipkan.



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Bagaimana cara mematikan kedaluwarsa kata sandi Oracle?

  2. penggunaan fungsi rownum dengan> masuk ke oracle

  3. SET NULL:Tentukan String untuk Dikembalikan Kapanpun Nilai Null Terjadi di SQLcl / SQL*Plus

  4. CLEAR SCREEN - Pintasan Pengembang Oracle SQL?

  5. Fungsi vs prosedur di Oracle