CREATE TABLE IF NOT EXISTS `jos_current_timestamp_workaround` (
`id` INT(11) NOT NULL AUTO_INCREMENT ,
`title` VARCHAR(255) NULL DEFAULT NULL COMMENT 'your fields here...' ,
`hits` INT(11) NULL DEFAULT NULL COMMENT 'See J!API JTable' ,
`ordering` INT(11) NULL DEFAULT NULL COMMENT 'See J!API JTable' ,
`checked_out` INT(11) NULL COMMENT 'See J!API JTable' ,
`checked_out_time` DATETIME NULL COMMENT 'See J!API JTable' ,
`publish_up` DATETIME NULL COMMENT 'See J!API' ,
`publish_down` DATETIME NULL COMMENT 'See J!API' ,
`published` TINYINT NULL DEFAULT 1 COMMENT 'See J!API ' ,
`params` TEXT NULL COMMENT 'See J!API JParameter...' ,
`created` DATETIME NULL COMMENT 'See tigger' ,
`updated` DATETIME NULL COMMENT 'See tigger' ,
PRIMARY KEY (`id`) )
ENGINE = InnoDB;
DELIMITER $$
DROP TRIGGER IF EXISTS `jos_ctw_created` $$
CREATE TRIGGER jos_ctw_created BEFORE INSERT ON `jos_current_timestamp_workaround` FOR EACH ROW SET
NEW.created = IFNULL(NEW.created, NOW()),
NEW.updated = IFNULL(NEW.updated, '0000-00-00 00:00:00')$$
DROP TRIGGER IF EXISTS `jos_ctw_updated` $$
CREATE TRIGGER jos_ctw_updated BEFORE UPDATE ON `jos_current_timestamp_workaround` FOR EACH ROW SET
NEW.updated = CASE
WHEN NEW.updated IS NULL THEN OLD.updated
WHEN NEW.updated = OLD.updated THEN NOW()
ELSE NEW.updated
END,
NEW.updated= IFNULL(NEW.updated, OLD.updated)$$
#1293 - Incorrect table definition; there can be only one TIMESTAMP column with CURRENT_TIMESTAMP in DEFAULT or ON UPDATE clause
O Código acima é um exemplo de código que você pode testar para resolver seu problema. Se você chegou nesta página é porque provavelmente tentou usar vários CURRENT_TIMESTAMP e descobriu que o MySQL exibe esse erro.
O que esse exemplo faz?
Este exemplo além de conter alguns campos padrões do Joomla, em vez de usar o CURRENT_TIMESTAMP, usa Trigger (gatilhos) do MySQL que são executados antes de inserir um novo dado, e ao atualizar este dado. Como você pode perceber, ele por exemplo não comete o erro de dizer que foi atualizado quando é criado.
fititnt.org is not affiliated with or endorsed by the Joomla Project or Open Source Matters. The Joomla logo is used under a limited license granted by Open Source Matters the trademark holder in the United States and other countries