Full-stack developer Emerson Rocha .::. CMS Joomla!, PHP, JavaScript/NodeJS, Infraestrutura

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.

Short link: http://goo.gl/ZjsiM

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
HTML5 Valid