यह है कि आप कैसे स्वचालित और लचीला createDate / lastModified फ़ील्ड ट्रिगर का उपयोग कर सकते हैं:
पहले उन्हें इस तरह परिभाषित करें:
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 निर्दिष्ट किए बिना उन्हें अपडेट करते हैं, तो LastModified वर्तमान टाइमस्टैम्प पर सेट हो जाएगा।
लेकिन यहाँ अच्छा हिस्सा है:
- यदि आप सम्मिलित करते हैं , तो आप वर्तमान टाइमस्टैम्प की तुलना में पुराने से एक CreateDate को निर्दिष्ट कर सकते हैं , जो पुराने समय से आयात को अच्छी तरह से काम करने की अनुमति देता है (lastModified createDate के बराबर होगा)।
- यदि आप अपडेट करते हैं , तो आप पिछले मान ('0000-00-00 00:00:00' अच्छी तरह से काम करता है) की तुलना में एक पुराने को निर्दिष्ट कर सकते हैं , यदि आप कॉस्मेटिक बदलाव कर रहे हैं तो एक प्रविष्टि को अपडेट करने की अनुमति देता है (एक टिप्पणी में एक टाइपो को ठीक करना) ) और आप पुरानी अंतिम तिथि को रखना चाहते हैं । यह अंतिम बार संशोधित तिथि को संशोधित नहीं करेगा।