ট্রিগারগুলি ব্যবহার করে আপনি কীভাবে স্বয়ংক্রিয় এবং নমনীয় ক্রিয়েটডিট / লাস্ট মডিফাইড ফিল্ডগুলি রাখতে পারেন:
প্রথমে তাদের এভাবে সংজ্ঞায়িত করুন:
CREATE TABLE `entity` (
`entityid` int(11) NOT NULL AUTO_INCREMENT,
`createDate` timestamp NOT NULL DEFAULT '0000-00-00 00:00:00',
`lastModified` timestamp NOT NULL DEFAULT '0000-00-00 00:00:00',
`name` varchar(255) DEFAULT NULL,
`comment` text,
PRIMARY KEY (`entityid`),
)
তারপরে এই ট্রিগারগুলি যুক্ত করুন:
DELIMITER ;;
CREATE trigger entityinsert BEFORE INSERT ON entity FOR EACH ROW BEGIN SET NEW.createDate=IF(ISNULL(NEW.createDate) OR NEW.createDate='0000-00-00 00:00:00', CURRENT_TIMESTAMP, IF(NEW.createDate<CURRENT_TIMESTAMP, NEW.createDate, CURRENT_TIMESTAMP));SET NEW.lastModified=NEW.createDate; END;;
DELIMITER ;
CREATE trigger entityupdate BEFORE UPDATE ON entity FOR EACH ROW SET NEW.lastModified=IF(NEW.lastModified<OLD.lastModified, OLD.lastModified, CURRENT_TIMESTAMP);
- আপনি যদি ঢোকান উল্লেখ createDate বা lastModified ছাড়াই তারা সমান এবং বর্তমান টাইমস্ট্যাম্প সেট করা হবে।
- আপনি যদি সেগুলি তারিখগুলি তৈরির তারিখ বা লাস্টমোডাইফাইড না করে আপডেট করে থাকেন তবে সর্বশেষতমিতটি বর্তমান টাইমস্ট্যাম্পে সেট করা হবে।
তবে এখানে সুন্দর অংশটি রয়েছে:
- আপনি যদি ঢোকান , যদি আপনি একটি নির্দিষ্ট করতে পারেন createDate বর্তমান টাইমস্ট্যাম্প চেয়ে পুরোনো , পুরোনো বার থেকে আমদানির ভাল কাজ করতে সক্ষম হবেন (lastModified createDate সমান হতে হবে)।
- আপনি যদি আপডেট করেন তবে আপনি আগের মান ('0000-00-00 00:00:00' ভাল কাজ করে) এর চেয়ে পুরনো একটি রূপান্তরিত নির্দিষ্ট করতে পারেন, আপনি যদি প্রসাধনী পরিবর্তনগুলি করে থাকেন তবে কোনও এন্ট্রি আপডেট করার অনুমতি দেয় (একটি মন্তব্যে টাইপ ফিক্সিং ) এবং আপনি পুরানো সর্বশেষতম তারিখটি রাখতে চান । এটি শেষের পরিবর্তিত তারিখটি পরিবর্তন করবে না।