Hola a todos,
este es mi primer correo a esta lista, así que no se cómo de activa está ni si es el lugar correcto para hacer este tipo de consultas...
Bueno el caso es que estoy implementando un sistema en el que es necesario guardar tramas de datos en bruto, o sea, como cadenas de bytes. Para almacenar dichas secuencias, he creado la tabla siguiente:
CREATE TABLE tramas_raw
(
trama bytea NOT NULL,
fecha timestamp without time zone NOT NULL DEFAULT now(),
CONSTRAINT pk_tramas_raw PRIMARY KEY (fecha)
)
WITH (OIDS=FALSE);
ALTER TABLE tramas_raw OWNER TO loquesea;
Lo que intento hacer es usar la fecha como identificador único de cada trama, ya que otros datos se pueden extraer de la cadena en bruto en caso necesario. Al insertar los datos, hago una consulta del tipo:
INSERT INTO tramas_raw(trama) VALUES (<cadena debidamente convertida>);
Esperaba que se insertara correctamente, ya que el tipo timestamp, al mostrarlo, se ve que tiene un montón de decimales, por lo que a la velocidad que se insertan los datos no debería ser posible que se repitieran los tiempos. En cambio, cuando empiezo a insertar me dice que violo la restricción.
Finalmente opté por añadir un campo de tipo bigserial, pero esto hace que el espacio necesario para almacenar todos los registros aumente mucho ya que se insertan registros nuevos cada 20 ms aproximadamente 24h al día. Para colmo insertando los datos con el ID como clave, se ve al consultar que todas las fechas son diferentes, lo cual contradice el error que me daba antes...
Estoy un poco desconcertado. ¿Alguien me puede dar una pista de lo que me pasa?
Jorge