Oracle
 sql >> Baza danych >  >> RDS >> Oracle

Jak używać %ROWTYPE podczas wstawiania do tabeli Oracle z kolumną tożsamości?

Jedyne, o czym mogę pomyśleć, skoro jesteś na 12c, to utworzyć kolumnę tożsamości INVISIBLE , jak w poniższym kodzie.

Problem polega na tym, że powoduje to uzyskanie %ROWTYPE z id trochę trudniejsze, ale jest to wykonalne.

Oczywiście może to również zmylić inne osoby korzystające z Twojego stołu, jeśli nie zobaczą klucza podstawowego!

Nie sądzę, żebym to zrobił, ale jest odpowiedź na twoje pytanie, ile to jest warte.

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. Jak mogę uzyskać liczbę rekordów, których dotyczy procedura składowana?

  2. Instalacja SonarQube z Oracle DB — Pobieranie użytkownika nie istnieje

  3. ORA-28000:konto jest zablokowane, pojawia się często błąd

  4. Zmaterializowany widok z Oracle

  5. Błędy PLS-00539 i PLS-00538 podczas tworzenia funkcji UDT