Ich habe eine Tabelle mit folgendem Aufbau:
+----+-------------+----------------+------------+------------+ | id | some column | another column | inserted | edited | +----+-------------+----------------+------------+------------+ | 1 | ... | ... | 2014-08-15 | 2016-03-04 | | 2 | ... | ... | 2015-09-16 | 2016-10-07 | | 3 | ... | ... | 2016-10-17 | 2016-11-16 | +----+-------------+----------------+------------+------------+
Beim Einfügen eines neuen Eintrags sollte das aktuelle Datum in die Spalte inserted
eingefügt werden. Es sollte sich nie ändern.
Beim Bearbeiten eines Eintrags sollte das aktuelle Datum zur Spalte edited
hinzugefügt werden und das Datum sollte jedes Mal aktualisiert werden, wenn dieser Eintrag bearbeitet wird.
Mein Ansatz bestand darin, in beiden Fällen den Datentyp zu definieren date
并将标准值更改为 CURDATE()
。但相反,只是将 CURDATE()
, der als String eingefügt werden soll.
UPDATE Hier ist eine Beispielabfrage:
CREATE TABLE `test`.`testtab` ( `id` INT NOT NULL auto_increment, `some column` VARCHAR(100) NULL, `another column` VARCHAR(100) NULL, `inserted` VARCHAR(100) NULL DEFAULT 'CURDATE()', `edited` VARCHAR(100) NULL DEFAULT 'CURDATE()', PRIMARY KEY (`id`) ) engine = innodb;
Über den Datentyp bin ich mir allerdings nicht sicher.
尝试如下修改您的架构
希望这对您有所帮助。
根据您的需求,这将适合您:
然后在处理时只提取日期部分:
您可以使用触发器作为解决方法,将日期时间字段设置为 NOW() 以进行新插入:
它也应该适用于更新