Mysql
 sql >> Teknologi Basis Data >  >> RDS >> Mysql

Perbarui tabel lain setelah dimasukkan menggunakan pemicu?

Jika Anda tidak mengharapkan data dalam jumlah besar, gunakan tampilan atau prosedur tersimpan untuk menghitung dengan cepat dan mengembalikan jumlah sebenarnya. Ini dapat menghemat banyak sakit kepala dalam jangka panjang.

Tampilan Anda (sebenarnya tampilan) mungkin terlihat seperti

CREATE VIEW vw_table2_sum AS
SELECT product, SUM(issued_qty) qty
  FROM Table2
 GROUP BY product;

CREATE VIEW vw_table1 AS
SELECT t.id, t.product, t.qty - COALESCE(v.qty, 0) qty
  FROM Table1 t LEFT JOIN vw_table2_sum v
    ON t.product = v.product;

Saat kita melakukannya

SELECT * FROM vw_table1;

akan mendapatkan

| ID |  PRODUCT | QTY |
-----------------------
|  1 |    mouse |   8 | -- the quantity is current
|  2 | keyboard |  15 |
|  3 |  monitor |   8 |

Ini SQLFiddle demo

Sekarang jika Anda karena alasan tertentu ingin mengelola kuantitas inventaris Anda dengan pemicu, mungkin akan terlihat seperti ini

CREATE TRIGGER tg_ai_table2
AFTER INSERT ON table2
FOR EACH ROW
  UPDATE Table1
     SET qty = qty - NEW.issued_qty
   WHERE product = NEW.product;

Ini SQLFiddle demo




  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. bagaimana cara memberikan nilai nol ke bidang kunci asing?

  2. MySQL - Cara mendapatkan hasil pencarian dengan relevansi yang akurat

  3. Vagrant - koneksi jarak jauh ke mysql - koneksi ssh luar gelandangan

  4. MySQL menghitung semua anak tidak peduli berapa banyak jumlahnya

  5. UTF-8 vs Latin1 mysql, indeks tidak digunakan pada utf-8