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

ट्रिगर का उपयोग करके डालने के बाद दूसरी तालिका अपडेट करें?

यदि आप बड़ी मात्रा में डेटा की अपेक्षा नहीं कर रहे हैं तो फ्लाई पर गणना करने और वास्तविक मात्रा वापस करने के लिए एक दृश्य या संग्रहीत प्रक्रिया का उपयोग करें। यह आपको लंबे समय में सिरदर्द से बचा सकता है।

आपका विचार (वास्तव में देखा गया) ऐसा दिखाई दे सकता है

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;

जब हम करते हैं

SELECT * FROM vw_table1;

मिलेगा

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

यह रहा SQLFiddle डेमो

अब यदि आप किसी कारणवश अपनी इन्वेंट्री मात्रा को ट्रिगर के साथ प्रबंधित करना चाहते हैं तो यह ऐसा दिखाई दे सकता है

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

यह रहा SQLFiddle डेमो




  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. PHP में SQL क्वेरी बनाम शर्तें

  2. mysql_fetch_array सभी पंक्तियों को जोड़ें?

  3. WORDPRESS के लिए तालिका आयात करते समय त्रुटि (स्थिति 25 के निकट) (एक विदेशी कुंजी त्रुटि)

  4. अनुक्रमणिका सहित एक MySQL तालिका की प्रतिलिपि बनाएँ

  5. MySQL:VARCHAR(255) के बजाय VARCHAR(20) का उपयोग क्यों करें?