Oracle
 sql >> डेटाबेस >  >> RDS >> Oracle

पहचान कॉलम के साथ Oracle तालिका में डालने पर% ROWTYPE का उपयोग कैसे करें?

केवल एक चीज जिसके बारे में मैं सोच सकता हूं, क्योंकि आप 12c पर हैं, वह है पहचान कॉलम INVISIBLE बनाना , नीचे दिए गए कोड की तरह।

समस्या यह है कि यह एक %ROWTYPE . प्राप्त कर रहा है साथ आईडी थोड़ा और कठिन है, लेकिन यह संभव है।

बेशक, यह आपकी तालिका का उपयोग करने वाले अन्य लोगों को भी प्राथमिक कुंजी न देखने के लिए भ्रमित कर सकता है!

मुझे नहीं लगता कि मैं यह करूँगा, लेकिन यह है आपके प्रश्न का उत्तर, इसके लायक क्या है।

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. GETDATE() एक अमान्य पहचानकर्ता क्यों है

  2. ओरेकल:क्या मैं प्रोग्रामेटिक रूप से बता सकता हूं कि किसी प्रक्रिया में कोई प्रतिबद्धता है या नहीं?

  3. Oracle डेटाबेस में एक अस्थायी चर घोषित करना

  4. क्या मुझे getString () के बजाय JDBC getNString () का उपयोग करना चाहिए?

  5. Oracle IF मौजूद है तो, ELSE