Oracle
 sql >> Teknologi Basis Data >  >> RDS >> Oracle

UPDATE dengan sintaks GABUNG untuk Oracle Database

Sintaks dari pernyataan UPDATE adalah:

http://docs.Oracle.com/cd/B19306_01 /server.102/b14200/statements_10007.htm

di mana dml_table_expression_clause adalah:

Mohon perhatikan ( subquery ) bagian dari sintaks di atas.

subquery adalah fitur yang memungkinkan untuk melakukan pembaruan gabungan.

Dalam bentuk yang paling sederhana dapat berupa:

UPDATE (
   subquery-with-a-join
)
SET cola=colb

Sebelum memperbarui bergabung, Anda harus mengetahui batasan yang tercantum di sini:

https://docs.Oracle.com/cd/B28359_01 /server.111/b28286/statements_8004.htm

  • Operator yang ditetapkan
  • Operator BERBEDA
  • Fungsi agregat atau analitik
  • GROUP BY, ORDER BY, MODEL, CONNECT BY, atau START WITH klausa
  • Ekspresi koleksi dalam daftar SELECT
  • Subkueri dalam daftar PILIH
  • Subquery yang ditunjuk DENGAN READ ONLY
  • Bergabung, dengan beberapa pengecualian, seperti yang didokumentasikan dalam Panduan Administrator Database Oracle

dan juga aturan umum terkait tampilan yang dapat diperbarui - di sini (bagian:Updating a Join View ):
http://docs .oracle.com/cd/B19306_01/server.102/b14231/views.htm#sthref3055

Pertama-tama kita bisa membuat subquery dengan join:

SELECT age 
FROM ages a
JOIN names m ON a.id = m.id
WHERE m.name = 'Sally'

Kueri ini hanya mengembalikan hasil berikut:

       AGE
----------
        30

dan sekarang kami dapat mencoba memperbarui kueri kami:

UPDATE (
    SELECT age 
    FROM ages a
    JOIN names m ON a.id = m.id
    WHERE m.name = 'Sally'
)
SET age = age + 1;

tapi kami mendapatkan kesalahan:

Kesalahan ini berarti, salah satu batasan di atas tidak terpenuhi (tabel yang diawetkan dengan kunci).

Namun jika kita menambahkan kunci utama ke tabel kita:

alter table names add primary key( id );
alter table ages add primary key( id );

maka sekarang pembaruan berfungsi tanpa kesalahan dan hasil akhirnya adalah:

select * from ages;

        ID        AGE
---------- ----------
         1         25
         2         31
         3         35



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Menyimpan angka nol di database dengan JPA dan Oracle

  2. Terhubung ke Oracle SQL di Katalon Studio

  3. Gunakan kembali parameter dalam Pernyataan yang Disiapkan?

  4. Cara menggabungkan operator IN dengan kondisi LIKE (atau cara terbaik untuk mendapatkan hasil yang sebanding)

  5. Oracle ke Excel - prosedur ekspor PL/SQL