মাইএসকিউএলে বিদ্যমান ট্রিগার সংজ্ঞাটি সংশোধন করা সম্ভব?


14

আমি ভাবছি যে মাইএসকিউএলে ট্রিগার সংজ্ঞাটি আপডেট করা সম্ভব কিনা। উদাহরণস্বরূপ, আমার একটি ট্রিগার টি রয়েছে এবং আমি এটিতে কিছু নতুন কার্যকারিতা যুক্ত করতে চাই।

আমার ধারনা হ'ল আমাকে এটিকে ফেলে এবং পুনরায় তৈরি করা দরকার।

এই জাতীয় দৃশ্যের জন্য ডাটাবেস প্রশাসনের সেরা অনুশীলনগুলি কী কী?


অ্যালেক্স, আপনি ট্রিগার সংজ্ঞা জন্য মাইএসকিউএল ডকুমেন্টেশন সন্ধান করেছেন? এটা কি বলেছিল; আপনি কোন অংশ (গুলি) সম্পর্কে অনিশ্চিত, বা যখন আপনি সেগুলি প্রয়োগ করার চেষ্টা করছেন তখন সমস্যার সৃষ্টি করছেন?
মাইকেল সবুজ

ট্রিগার আপডেট করা সম্ভব কিনা তা আমি মাইএসকিউএল ডকুমেন্টেশনে কোনও তথ্য পাইনি। আমি ধরে নিই যে এটি অসম্ভব এবং আমি ডাবল চেক করতে চাই।
অ্যালেক্স

উত্তর:


19

দেখে মনে হচ্ছে আপনি পারমাণবিক ক্রিয়াকলাপে ট্রিগার পরিবর্তন করা সম্ভব কিনা তা জিজ্ঞাসা করছেন, যেখানে নতুন সংজ্ঞা ব্যর্থ হলে আপনি পুরানোটিকে হারাবেন না ... অনুরূপ CREATE OR REPLACE VIEW, যা নতুন সংজ্ঞা থাকলে ভিউ সংজ্ঞাটি প্রতিস্থাপন করে বৈধ, তবে এটি পুরানো জায়গায় রেখে দেয়, যদি আপনি এটি প্রতিস্থাপন করতে না পারেন।

দুর্ভাগ্যক্রমে, মাইএসকিউএল নেই ALTER TRIGGERবা নেই CREATE OR REPLACE TRIGGER

আমি পরামর্শ দেব যে ট্রিগারটি যেখানে থাকে সেখানে টেবিলটি লক করা সবচেয়ে ভাল অনুশীলন, যাতে ট্রিগারটি অনুপস্থিত থাকলে কোনও সারি প্রভাবিত হয় না। একটি টেবিল লক থাকাকালীন ড্রপিং এবং ট্রিগার যুক্ত করার অনুমতি রয়েছে।

mysql> LOCK TABLES t1 WRITE; -- the next prompt appears once you've obtained the lock
mysql> DROP TRIGGER t1_bi; 
mysql> DELIMITER $$
mysql> CREATE TRIGGER ti_bi BEFORE INSERT ON t1 FOR EACH ROW 
       BEGIN
       ...
       END $$
mysql> DELIMITER ;
mysql> UNLOCK TABLES;

আপডেট: মারিয়াডিবি, 10.1.4 সংস্করণে, CREATE OR REPLACE TRIGGERমাইএসকিউএল-এর জন্য তাদের ড্রপ-ইন প্রতিস্থাপনে সমর্থন যোগ করেছে।

https://mariadb.com/kb/en/mariadb/create-trigger/

ওরাকল এর মাইএসকিউএল 5.7 হিসাবে এখনও উপরের সমাধানের উপর নির্ভর করে।


2
"5.7 হিসাবে ওরাকল এর মাইএসকিউএল এখনও উপরের সমাধানের উপর নির্ভর করে" - এখনও সংস্করণ 8.0-এ রয়েছে
পল ক্যাম্পবেল
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.