Ciao,
credo dipenda dal modo in cui è dichiarata la tabella.
Prendi queste 2 tabelle create da Akeeba:
<!-- Create #__ak_storage if it's missing -->
<action table="#__ak_storage" canfail="0">
<condition type="missing" value="" />
<query><![CDATA[
CREATE TABLE `#__ak_storage` (
`tag` varchar(255) NOT NULL,
`lastupdate` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP,
`data` longtext,
PRIMARY KEY (`tag`)
) DEFAULT CHARACTER SET utf8;
]]></query>
</action>
$schemata['#__ak_storage'] = <<<ENDSQL
CREATE TABLE IF NOT EXISTS `#__ak_storage` (
`tag` VARCHAR(255) NOT NULL,
`lastupdate` TIMESTAMP DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP,
`data` LONGTEXT,
PRIMARY KEY (`tag`)
) DEFAULT CHARACTER SET utf8;
ENDSQL;
Il campo interessato è `lastupdate` equivalente al tuo `modified`. Entrambi sono TIMESTAMP e dovrebbero aggiornarsi da soli mettendo NULL al posto del valore nella INSERT INTO. Perlomeno il primo che è NOT NULL e se metti NULL forzi il valore di default dichiarato.
Per il campo `created` che hai, se lo dichiari TIMESTAMP dovrebbe pure aggiornarsi da solo, però cambierebbe valore ogni volta che il record viene aggiornato. Forse è meglio mettere un campo normale come hai messo.
Spero ti sia utile
Bye!