Oracle
 sql >> Cơ Sở Dữ Liệu >  >> RDS >> Oracle

Làm thế nào để sử dụng% ROWTYPE khi chèn vào bảng Oracle với cột nhận dạng?

Điều duy nhất tôi có thể nghĩ đến, vì bạn đang ở tuổi 12c là tạo cột danh tính INVISIBLE , giống như đoạn mã bên dưới.

Vấn đề là nó làm cho việc nhận %ROWTYPE với id khó hơn một chút, nhưng nó có thể làm được.

Tất nhiên, nó cũng có thể gây nhầm lẫn cho những người khác đang sử dụng bảng của bạn là không thấy khóa chính!

Tôi không nghĩ mình sẽ làm điều này, nhưng nó một câu trả lời cho câu hỏi của bạn, cho những gì đáng giá.

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. Thiết kế lược đồ đơn giản để phân biệt dự báo nhu cầu

  2. CriteriaQuery bộ lọc tháng và năm

  3. Java:Io ngoại lệ:Bộ điều hợp mạng không thể thiết lập kết nối

  4. Trong PL / SQL, lấy một bảng làm tham số, lọc nó và trả về

  5. Phân bổ bộ nhớ Oracle JDBC trong khi tìm nạp tập kết quả