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

Как да използвам %ROWTYPE при вмъкване в таблица на Oracle с колона за идентичност?

Единственото нещо, за което се сещам, тъй като сте на 12c, е да направя колоната за самоличност INVISIBLE , като кода по-долу.

Проблемът е, че прави получаването на %ROWTYPE с id малко по-трудно, но е изпълнимо.

Разбира се, това може също да обърка други хора, използващи вашата таблица, да не виждат първичен ключ!

Не мисля, че бих направил това, но е отговор на въпроса ви, каквото си заслужава.

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. Изхвърлете данни от таблица(и) на Oracle към изрази INSERT

  2. Как да получа идентификатор за последно вмъкване в Oracle с помощта на MyBatis?

  3. JDBC ResultSet:Имам нужда от getDateTime, но има само getDate и getTimeStamp

  4. как да настроя serveroutput при използване на jdbc връзка в Jmeter

  5. Oracle:Комбинирайте две таблици с различни колони