2009/12/24 Julio Cesar Rodriguez Dominguez <[email protected]>: > > > El 23 de diciembre de 2009 22:32, Alexis Sanchez <[email protected]> > 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/ -- TIP 4: No hagas 'kill -9' a postmaster
