Tetikleyicileri kullanarak otomatik ve esnek createDate / lastModified alanlarına bu şekilde sahip olabilirsiniz:
Önce onları şu şekilde tanımlayın:
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`),
)
Ardından şu tetikleyicileri ekleyin:
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);
- Eğer varsa eklemek belirterek CreateDate veya lastModified olmadan, onlar şimdiki zaman damgasına eşit ve seti olacak.
- Eğer varsa güncellemek CreateDate veya lastModified belirtmeden onları, lastModified geçerli zaman damgasına kümesi olacaktır.
Ama işte güzel kısım:
- Eğer varsa eklemek , bir belirtebilirsiniz şimdiki zaman damgası daha CreateDate yaşlı yaşlı zamanlardan ithalatı iyi çalışmasını sağlayan, (lastModified CreateDate eşit olacaktır).
- Eğer varsa güncelleştirmek , bir belirtebilirsiniz önceki değerden daha eski lastModified bir yorumda bir yazım hatası tespit kozmetik değişiklikler (yapıyorsan bir girdi güncellemek için izin ( '0000-00-00 00:00:00' iyi çalışıyor) ) ve eski son Değiştirilen tarihi saklamak istiyorsunuz . Bu, son Değiştirilme tarihini değiştirmez.