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

कुछ शर्तों के तहत INSERT को रोकने के लिए MySQL ट्रिगर

उदाहरण 1, MySQL, आप ट्रिगर में उस इंसर्ट को signal sqlstate से रद्द कर सकते हैं

  1. वर्चर कॉलम के साथ अपनी टेबल बनाएं:

    mysql> create table yar (val VARCHAR(25) not null);
    Query OK, 0 rows affected (0.02 sec)
    
  2. किसी शर्त की जांच करने और अनुमति न देने के लिए अपना 'सम्मिलित करने से पहले' ट्रिगर बनाएं।

    mysql> delimiter $$
    mysql> create trigger foo before insert on yar
        -> for each row
        -> begin
        -> if new.val = '' then
        -> signal sqlstate '45000';
        -> end if;
        -> end;$$
    Query OK, 0 rows affected (0.01 sec)
    
  3. जहां शर्त पूरी होती है वहां डालने का प्रयास करें:

    mysql> delimiter ;
    
    mysql> insert into yar values("");
    ERROR 1644 (45000): Unhandled user-defined exception condition
    
    mysql> insert into yar values ("abc");
    Query OK, 1 row affected (0.01 sec)
    
    mysql> select * from yar;
    +-----+
    | val |
    +-----+
    | abc |
    +-----+
    1 row in set (0.00 sec)
    

आपने एक खाली स्ट्रिंग डाली, ट्रिगर ने देखा कि यह खाली था और इंसर्ट को रोकने के लिए सिग्नल उठाया।

उदाहरण 2, MySQL, डेटा को शून्य बाधा का उल्लंघन करने के कारण ट्रिगर में सम्मिलित करना रद्द करें।

  1. वर्चर कॉलम के साथ अपनी टेबल बनाएं:

    mysql> create table yar (val VARCHAR(25) not null);
    Query OK, 0 rows affected (0.02 sec)
    
  2. किसी शर्त की जांच करने और अनुमति न देने के लिए अपना 'सम्मिलित करने से पहले' ट्रिगर बनाएं।

    mysql> delimiter $$
    mysql> create trigger foo before insert on yar
        -> for each row
        -> begin
        -> if new.val = '' then
        -> set new.val = NULL;
        -> end if;
        -> end;$$
    Query OK, 0 rows affected (0.01 sec)
    
  3. जहां शर्त पूरी होती है वहां डालने का प्रयास करें:

    mysql> delimiter ;
    
    mysql> insert into yar values("");
    ERROR 1048 (23000): Column 'val' cannot be null
    
    mysql> insert into yar values ("abc");
    Query OK, 1 row affected (0.01 sec)
    
    mysql> select * from yar;
    +-----+
    | val |
    +-----+
    | abc |
    +-----+
    1 row in set (0.00 sec)
    

आपने एक खाली स्ट्रिंग डाली, ट्रिगर ने देखा कि यह खाली है और मान को शून्य में बदल दिया है, इसलिए सम्मिलन रोका गया है।



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. MySQL क्वेरी में IF कंडीशन के साथ गिनें

  2. MySQL वाइल्ड कार्ड से बचना

  3. MySQL में एक Python datetime.datetime ऑब्जेक्ट सम्मिलित करना

  4. MySQL कार्यक्षेत्र में एक डेटाबेस आरेख बनाएँ

  5. मौजूदा तालिका में ऑटो-इन्क्रीमेंट आईडी जोड़ें?