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

एकल क्वेरी का उपयोग करके एकाधिक तालिका स्तंभ मान अपडेट करें

/** XXX CODING HORROR... */

अपनी आवश्यकताओं के आधार पर, आप अद्यतन करने योग्य दृश्य . का उपयोग कर सकते हैं . आप अपनी आधार तालिका का एक दृश्य बनाते हैं और इस दृश्य में "बजाय" ट्रिगर जोड़ते हैं और आप दृश्य को सीधे अपडेट करते हैं।

कुछ उदाहरण तालिकाएँ:

create table party (
    party_id integer,
    employee_id integer
    );

create table party_name (
    party_id integer,
    first_name varchar2(120 char),
    last_name varchar2(120 char)
    );

insert into party values (1,1000);   
insert into party values (2,2000);
insert into party values (3,3000);

insert into party_name values (1,'Kipper','Family');
insert into party_name values (2,'Biff','Family');
insert into party_name values (3,'Chip','Family');

commit;

select * from party_v;

PARTY_ID    EMPLOYEE_ID    FIRST_NAME    LAST_NAME
1            1000           Kipper        Family
2            2000           Biff          Family
3            3000           Chip          Family

... फिर एक अद्यतन करने योग्य दृश्य बनाएं

create or replace view party_v
as
select
    p.party_id,
    p.employee_id,
    n.first_name,
    n.last_name
from
    party p left join party_name n on p.party_id = n.party_id;

create or replace trigger trg_party_update
instead of update on party_v 
for each row
declare
begin
--
    update party
    set
        party_id = :new.party_id,
        employee_id = :new.employee_id
    where
        party_id = :old.party_id;
--
    update party_name
    set
        party_id = :new.party_id,
        first_name = :new.first_name,
        last_name = :new.last_name
    where
        party_id = :old.party_id;
--
end;
/

अब आप सीधे दृश्य को अपडेट कर सकते हैं...

update party_v
set
    employee_id = 42,
    last_name = 'Oxford'
where
    party_id = 1;

select * from party_v;

PARTY_ID    EMPLOYEE_ID    FIRST_NAME    LAST_NAME
1            42             Kipper        Oxford
2            2000           Biff          Family
3            3000           Chip          Family


  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. एक प्रक्रिया के भीतर एक और पीएल/एसक्यूएल प्रक्रिया को कॉल करना

  2. JDBC कनेक्शन डिफ़ॉल्ट ऑटोकॉमिट व्यवहार

  3. EBS R12.2/ स्टैंडअलोन वेबलॉजिक में वेबलॉगिक सर्वर संस्करण/पैच खोजें

  4. इकाई फ्रेमवर्क के साथ ऑरैकल पैकेज के अंदर संग्रहीत प्रक्रिया को कैसे कॉल करें?

  5. बादल में धीमा प्रवास