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

Bagaimana cara menggunakan %ROWTYPE saat memasukkan ke tabel Oracle dengan kolom identitas?

Satu-satunya hal yang dapat saya pikirkan, karena Anda menggunakan 12c adalah membuat kolom identitas INVISIBLE , seperti kode di bawah ini.

Masalahnya adalah itu membuat mendapatkan %ROWTYPE dengan id sedikit lebih sulit, tapi bisa dilakukan.

Tentu saja, ini juga dapat membingungkan orang lain yang menggunakan tabel Anda untuk tidak melihat kunci utama!

Saya tidak berpikir saya akan melakukan ini, tetapi adalah jawaban atas pertanyaan Anda, untuk apa nilainya.

DROP TABLE t;

CREATE TABLE t ( id number invisible generated always as identity, 
                 val varchar2(30));

insert into t (val) values ('A');                 

DECLARE

  record_without_id t%rowtype;
  CURSOR c_with_id IS SELECT t.id, t.* FROM t;
  record_with_id c_with_id%rowtype;

BEGIN
  record_without_id.val := 'C';
  INSERT INTO t VALUES record_without_id;

  -- If you want ID, you must select it explicitly
  SELECT id, t.* INTO record_with_id FROM t WHERE rownum = 1;

  DBMS_OUTPUT.PUT_LINE(record_with_id.id || ', ' || record_with_id.val);
END;
/

SELECT id, val FROM t;    


  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Penanganan data benih di patching online R12.2

  2. Layanan Database di AWS dan Oracle Cloud Platform

  3. Kesalahan mutasi aktif setelah pemicu penyisipan

  4. Oracle sqlldr:kolom tidak diizinkan di sini

  5. Permintaan pembaruan Oracle SQL hanya memperbarui nilai jika mereka nol