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

mysql ट्रिगर्स सिमुलेटिंग असेसमेंट

खैर, समस्या यह है कि MySQL के पास STOP ACTION . के बराबर नहीं है आज्ञा। तो मूल रूप से, आसपास का काम काफी गंदा है:

एक तरीका यह है कि आप किसी त्रुटि को बबल करने और इंसर्ट को रद्द करने के लिए ट्रिगर के अंदर एक बाधा का उल्लंघन कर सकते हैं:

CREATE TABLE stop_action (
    id INT NOT NULL AUTO_INCREMENT PRIMARY KEY,
    name VARCHAR(35),
    UNIQUE KEY (id, name)
);
INSERT INTO stop_action (1, 'Assert Failure');

फिर, ट्रिगर में, बस निम्न करने का प्रयास करें:

INSERT INTO stop_action (1, 'Assert Failure');

इसका लाभ यह है कि जो त्रुटि लौटाई गई है वह एक डुप्लिकेट कुंजी त्रुटि होगी, और पाठ में "असफलता का दावा" शामिल होगा।

तो आपका ट्रिगर बन जाएगा:

delimiter |

CREATE TRIGGER asser1_before BEFORE INSERT ON test1
  FOR EACH ROW BEGIN
    SELECT count(*) INTO test FROM (select count(*)
          from Video  
          where Date >= DATE_SUB(current_date(),INTERVAL  1 YEAR ) 
            && Date<=current_date()  
          group by User   
          having count(*) > 200);
    IF test != 0 THEN
        INSERT INTO stop_action (1, 'Assert Failure');
    END IF;
  END;
|

delimiter ;

अब, आपको इसे UPDATE . से पहले करना होगा साथ ही, अन्यथा आप दिनांक को अमान्य स्थिति में अपडेट कर सकते हैं। लेकिन अन्यथा, यह आपको कम से कम आरंभ करना चाहिए...




  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. क्या डेटा लोड करने के लिए .SQL फ़ाइल को निष्पादित करने का कोई लारवेल तरीका है?

  3. MYSQL - प्रत्येक वर्ष के लिए एक पंक्ति प्राप्त करें, प्रत्येक माह के लिए कुल योग के साथ

  4. चेकबॉक्स को पॉप्युलेट करें और फिर चयन को mysql में अपडेट करें

  5. Mysql कस्टम ऑर्डर द्वारा और वर्णमाला क्रम द्वारा: