Re: Reinicar por completo una tabla

From: Mariano Reingart <reingart(at)gmail(dot)com>
To: Julio Cesar Rodriguez Dominguez <jurasec(at)gmail(dot)com>
Cc: Alexis Sanchez <aasanchez(at)gmail(dot)com>, pgsql-es-ayuda(at)postgresql(dot)org
Subject: Re: Reinicar por completo una tabla
Date: 2009-12-24 16:07:30
Message-ID: 5aebd8250912240807n45fed1e1jbeb990d5e5d4046f@mail.gmail.com
Views: Raw Message | Whole Thread | Download mbox | Resend email
Thread:
Lists: pgsql-es-ayuda

2009/12/24 Julio Cesar Rodriguez Dominguez <jurasec(at)gmail(dot)com>:
>
>
> 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

Con 8.4 podes reiniciar automáticamente las secuencias con restart identity:

TRUNCATE TABLE daft_core.users RESTART IDENTITY;

Sds
Mariano Reingart
http://www.arpug.com.ar/

In response to

Browse pgsql-es-ayuda by date

  From Date Subject
Next Message Iván Caballero Cano 2009-12-24 16:35:00 Off-Topic para buscar una lista de correo de otro tema
Previous Message Julio Cesar Rodriguez Dominguez 2009-12-24 15:46:18 Re: Reinicar por completo una tabla