Hola,

Lo primero de todo: es la primera vez que escribo así que un saludo a
todos :-)

Quería convertir una opción de MySQL (al crear tablas) a Postgres, pero
no estaba seguro.

La tabla en MySQL es algo así como,

CREATE TABLE `TResource` (
  `id` varchar(255) NOT NULL,
  `type` varchar(50) NOT NULL default '',
  `uploaded` timestamp NOT NULL default CURRENT_TIMESTAMP on update
CURRENT_TIMESTAMP,
  `validNotBefore` timestamp NOT NULL default '0000-00-00 00:00:00',
  `validNotAfter` timestamp NOT NULL default '0000-00-00 00:00:00',
  `name` varchar(255) NOT NULL default '',
  `description` text,
  PRIMARY KEY  (`id`)
) ENGINE=InnoDB DEFAULT CHARSET=latin1;

En Postgres, la he creado tal que,

CREATE TABLE TResource (
  id character varying(255) NOT NULL,
  "type" character varying(50) NOT NULL default '',
  uploaded timestamp NOT NULL default CURRENT_TIMESTAMP,
  validNotBefore timestamp NOT NULL default '0000-00-00 00:00:00',
  validNotAfter timestamp NOT NULL default '0000-00-00 00:00:00',
  name character varying(255) NOT NULL default '',
  description text
);

ALTER TABLE TResource
   ADD CONSTRAINT TResource_pkey PRIMARY KEY (id);

El problema es que parece que no se puede hacer, para el atributo
"uploaded", el añadido de "on update CURRENT_TIMESTAMP" con lo que
leyendo la documentación he pensado en algo así como,

CREATE RULE TResource_update_uploaded AS ON UPDATE TResource.uploaded DO
UPDATE TResource (new.uploaded = NOW()) WHERE TResource.id=current.id;

¿Sería así la equivalencia?

Muchas gracias.

Saludos,
  Alvaro Uría

Attachment: signature.asc
Description: OpenPGP digital signature

Responder a