From: | Julio Cesar Rodriguez Dominguez <jurasec(at)gmail(dot)com> |
---|---|
To: | Alexis Sanchez <aasanchez(at)gmail(dot)com> |
Cc: | pgsql-es-ayuda(at)postgresql(dot)org |
Subject: | Re: Reinicar por completo una tabla |
Date: | 2009-12-24 15:46:18 |
Message-ID: | 925902880912240746h6263b3e9t4b3714c3cf4fb340@mail.gmail.com |
Views: | Raw Message | Whole Thread | Download mbox | Resend email |
Thread: | |
Lists: | pgsql-es-ayuda |
El 23 de diciembre de 2009 22:32, Alexis Sanchez <aasanchez(at)gmail(dot)com>escribió:
> Resulta que estoy realizando unas pruebas con pgsql, migrando una
> aplicacion que ya tenia en msyql.. ahora mientras realizo estas
> pruebas muchas veces me toca reinicar una de las tablas, digamos la
> tabla de usuarios, la cual posee la siguiente estructura..
>
> CREATE TABLE daft_core.users
> (
> id_user serial NOT NULL,
> loginname character varying(50) NOT NULL,
> pass character(32) NOT NULL,
> id_level smallint NOT NULL,
> state boolean NOT NULL,
> create_at character varying(23) NOT NULL,
> update_at character varying(21),
> delete_at character varying(21),
> CONSTRAINT users_pkey PRIMARY KEY (id_user),
> CONSTRAINT users_loginname_key UNIQUE (loginname)
> )
> WITH (
> OIDS=FALSE
> );
> ALTER TABLE daft_core.users OWNER TO daft;
>
> como veran el id_user es un campo autoincrementable y por lo que
> entiendo este campo debe ser de tipo serial, y esta regido por una
> secuencia
>
> CREATE SEQUENCE daft_core.users_id_user_seq
> INCREMENT 1
> MINVALUE 1
> MAXVALUE 9223372036854775807
> START 9
> CACHE 1;
> ALTER TABLE daft_core.users_id_user_seq OWNER TO daft;
>
> Cuando trabajaba en mysql para reinicar por completo una tabla
> (incluso sus indices) solo usaba TRUNCATE tabla y listo, reiniciaba
> incluso los indices... pero aca no es tan simple por que igual debo
> aparte reinciar esta tabla, pero si intento cambiar el valor de START
> a 0 me dice que no es un valor valido, y si lo coloco en 1 el primer
> registro sera 2.... que estoy haciendo mal, quiero basicamente
> reiniciar toda esta tabla incluso su secuancia de indices pudiendo
> comenzar de nuevo en 1
>
Usa además de truncate, la función setval(...), para reiniciar la secuencia;
Para poder reiniciar a 1, y usar ese valor para el próximo nextval, pon
false en el tercer parámetro.
SELECT setval('foo', 42, false); Next nextval will return 42
http://www.postgresql.org/docs/current/static/functions-sequence.html
From | Date | Subject | |
---|---|---|---|
Next Message | Mariano Reingart | 2009-12-24 16:07:30 | Re: Reinicar por completo una tabla |
Previous Message | Alexis Sanchez | 2009-12-24 04:32:28 | Reinicar por completo una tabla |