কম্পিউটার টিউটোরিয়াল

ট্রিগারযুক্ত টেবিল ড্রপ করলে ট্রিগারের কী হয়?


যে টেবিলের সাথে ট্রিগার যুক্ত, সেটি ড্রপ করলে ট্রিগারও নষ্ট হয়ে যায়। এটাকে ট্রিগারের ইমপ্লিসিট ডিস্ট্রাকশন বলা হয়। নিচের উদাহরণ:

উদাহরণ

মান লিইয়ে 'trigger_before_delete_sample' নামে একটি ট্রিগার 'Sample' টেবিলে আছে। এখন এই টেবিল ডিলিট করলে সেই ট্রিগারও ডিলিট হয়ে যাবে।

mysql> Show Triggers\G 
*************************** 1. row *************************** 
                      Trigger: trigger_before_delete_sample 
                        Event: DELETE 
                        Table: sample 
                      Statement: BEGIN          SET @count = if (@count IS NULL, 1, (@count+1));          INSERT INTO sample_rowaffected values (@count); END 
                      Timing: BEFORE 
                      Created: 2017-11-21 12:31:58.70 
                     sql_mode: ONLY_FULL_GROUP_BY, 
                       STRICT_TRANS_TABLES, 
                       NO_ZERO_IN_DATE, 
                       NO_ZERO_DATE, 
                       ERROR_FOR_DIVISION_BY_ZERO, 
                       NO_AUTO_CREATE_USER, 
                       NO_ENGINE_SUBSTITUTION 
                      Definer: root@localhost 
 character_set_client: cp850 
 collation_connection: cp850_general_ci 
   Database Collation: latin1_swedish_ci 
*************************** 2. row *************************** 
              Trigger: before_inser_studentage 
                Event: INSERT 
                Table: student_age 
              Statement: IF NEW.age < 0 THEN SET NEW.age = 0; END IF 
               Timing: BEFORE 
              Created: 2017-11-21 11:26:15.34 
             sql_mode: ONLY_FULL_GROUP_BY, 
                       STRICT_TRANS_TABLES, 
                       NO_ZERO_IN_DATE, 
                       NO_ZERO_DATE, 
                       ERROR_FOR_DIVISION_BY_ZERO, 
                       NO_AUTO_CREATE_USER, 
                       NO_ENGINE_SUBSTITUTION 
              Definer: root@localhost 
 character_set_client: cp850 
 collation_connection: cp850_general_ci 
   Database Collation: latin1_swedish_ci 
2 rows in set (0.01 sec)

উপরের ফলাফলে ডাটাবেসে দুটি ট্রিগার আছে, যেনে একটি 'Sample' টেবিলের সাথে যুক্ত। এখন নিচের স্টেটমেন্ট দিয়ে টেবিলটি ড্রপ করি:

mysql> DROP table sample; 
Query OK, 0 rows affected (0.26 sec)

এখন নিচের স্টেটমেন্ট দিয়ে দেখতে পাওয়া যাবে যে 'Sample' টেবিলের সাথে যুক্ত ট্রিগারও নষ্ট হয়েছে।

mysql> Show Triggers\G 
*************************** 1. row *************************** 
              Trigger: before_inser_studentage 
                Event: INSERT 
                Table: student_age 
              Statement: IF NEW.age < 0 THEN SET NEW.age = 0; END IF 
               Timing: BEFORE 
              Created: 2017-11-21 11:26:15.34 
             sql_mode: ONLY_FULL_GROUP_BY, 
                       STRICT_TRANS_TABLES, 
                       NO_ZERO_IN_DATE, 
                       NO_ZERO_DATE, 
                       ERROR_FOR_DIVISION_BY_ZERO, 
                       NO_AUTO_CREATE_USER, 
                       NO_ENGINE_SUBSTITUTION 
              Definer: root@localhost 
 character_set_client: cp850 
 collation_connection: cp850_general_ci 
   Database Collation: latin1_swedish_ci 
1 row in set (0.01 sec)

  1. MySQL-এ একাধিক NULL ভ্যালুযুক্ত কলামে DISTINCT ক্লজ ব্যবহার করলে কী রিটার্ন করে?

  2. MySQL-এ সংখ্যা দিয়ে শেষ হওয়া স্ট্রিং বের করা (REGEXP)

  3. MySQL-এ RAND() ব্যবহার করে টেবিলের রেকর্ড র‍‍‍্যান্ডমলি শাফল করা

  4. MySQL-এ রিজার্ভড কীওয়ার্ড (groups) দিয়ে টেবিল তৈরি করার সমস্যা ও সমাধান