CREATE TABLE `citizenships` ( `id_citizenships` INT(11) UNSIGNED NOT NULL AUTO_INCREMENT, `citizenships_name` VARCHAR(255) NOT NULL, `created_at` TIMESTAMP NULL DEFAULT NULL, `updated_at` TIMESTAMP NULL DEFAULT NULL, `deleted_at` TIMESTAMP NULL DEFAULT NULL, PRIMARY KEY (`id_citizenships`) ) COLLATE='utf8_general_ci' ENGINE=InnoDB AUTO_INCREMENT=9 ;
i wywołując taki trigger:
BEGIN IF (@user_id IS NULL ) THEN SET @user_id=0; END IF; IF OLD.citizenships_name <> NEW.citizenships_name THEN INSERT INTO logs (user_id,object,object_field,object_id,new_value,old_value,message,STATUS,date) VALUES (@user_id,'citizenships','citizenships_name',OLD.id_citizenships,NEW.citizenships_name,OLD.citizenships_name,'Zmieniono nazw obywatelstwa','updated',NOW()); END IF; IF OLD.created_at <> NEW.created_at THEN INSERT INTO logs (user_id,object,object_field,object_id,new_value,old_value,message,STATUS,date) VALUES (@user_id,'citizenships','created_at',OLD.id_citizenships,NEW.created_at,OLD.created_at,'Zmieniono date dodania','updated',NOW()); END IF; IF OLD.updated_at <> NEW.updated_at THEN INSERT INTO logs (user_id,object,object_field,object_id,new_value,old_value,message,STATUS,date) VALUES (@user_id,'citizenships','updated_at',OLD.id_citizenships,NEW.updated_at,OLD.updated_at,'Zmieniono date aktualizacji','updated',NOW()); END IF; IF OLD.deleted_at <> NEW.deleted_at THEN INSERT INTO logs (user_id,object,object_field,object_id,new_value,old_value,message,STATUS,date) VALUES (@user_id,'citizenships','deleted_at',OLD.id_citizenships,NEW.deleted_at,OLD.deleted_at,'Zmieniono date usuniecia / usunieto rekANDd','updated',NOW()); END IF; END
Rekordy nie są dodawane do tabeli logs kiedy zmienane są wartości z NULL na timestamp. Jak już pole ma ustawiony timestamp i zmieniamy np o 1 minute do przodu itd. to rekordy się dodają ocb?