[pgsql-es-ayuda] CAMPO SERIAL...
Tengo una aplicación en VB6 y resulta que tengo una tabla en postgresql donde la clave primaria es un campo de tipo serial. En otras bases se traduciría en un "autonumerico"... cuando hago el insert no se serializa automaticamente... por ejemplo tengo: INSERT INTO com.bultos(id, bulto, bulto_corto) VALUES (?, ?, ?); pero el id que es el campo serial, previamente tengo que calcular el máximo valor y le sumaría una unidad (no encontré otra forma para poder hacerlo)... Como podría hacer esto medianamente automatizado ? Saludos y muchas gracias desde ya
Re: [pgsql-es-ayuda] CAMPO SERIAL...
El 03/05/11 13:36, Marcelo Robin escribió: > Tengo una aplicación en VB6 y resulta que tengo una tabla en postgresql > donde la clave primaria es un campo de tipo serial. En otras bases se > traduciría en un "autonumerico"... cuando hago el insert no se serializa > automaticamente... > por ejemplo tengo: > > INSERT INTO com.bultos(id, bulto, bulto_corto) VALUES (?, ?, ?); Al crear la tabla asignas a id el tipo SERIAL, luego en el insert no le pases el valor para el campo id. CREATE TABLE com.bultos( id SERIAL PRIMARY KEY, bulto integer, bulto_corto integer ); INSERT INTO com.bultos(bulto, bulto_corto) VALUES (1, 1); INSERT INTO com.bultos(bulto, bulto_corto) VALUES (1, 2); INSERT INTO com.bultos(bulto, bulto_corto) VALUES (2, 1); - Enviado a la lista de correo pgsql-es-ayuda (pgsql-es-ayuda@postgresql.org) Para cambiar tu suscripci�n: http://www.postgresql.org/mailpref/pgsql-es-ayuda
Re: [pgsql-es-ayuda] CAMPO SERIAL...
MUCHISIMAS GRACIAS !!! El 3 de mayo de 2011 09:35, iescriva escribió: > El 03/05/11 13:36, Marcelo Robin escribió: > > Tengo una aplicación en VB6 y resulta que tengo una tabla en postgresql > > donde la clave primaria es un campo de tipo serial. En otras bases se > > traduciría en un "autonumerico"... cuando hago el insert no se serializa > > automaticamente... > > por ejemplo tengo: > > > > INSERT INTO com.bultos(id, bulto, bulto_corto) VALUES (?, ?, ?); > > > Al crear la tabla asignas a id el tipo SERIAL, luego en el insert no le > pases el valor para el campo id. > > > CREATE TABLE com.bultos( > id SERIAL PRIMARY KEY, > bulto integer, > bulto_corto integer > > ); > > INSERT INTO com.bultos(bulto, bulto_corto) VALUES (1, 1); > INSERT INTO com.bultos(bulto, bulto_corto) VALUES (1, 2); > INSERT INTO com.bultos(bulto, bulto_corto) VALUES (2, 1); > - > Enviado a la lista de correo pgsql-es-ayuda (pgsql-es-ayuda@postgresql.org > ) > Para cambiar tu suscripción: > http://www.postgresql.org/mailpref/pgsql-es-ayuda >
Re: [pgsql-es-ayuda] CAMPO SERIAL...
para cuando necesites obtener el siguiente valor de la secuencia: select nextval('com.bultos_id_seq') INSERT INTO com.bultos VALUES ((select nextval('com.bultos_id_seq')),2, 2); -- evelyn El 3 de mayo de 2011 08:36, Marcelo Robin escribió: > MUCHISIMAS GRACIAS !!! > > El 3 de mayo de 2011 09:35, iescriva escribió: > > El 03/05/11 13:36, Marcelo Robin escribió: >> > Tengo una aplicación en VB6 y resulta que tengo una tabla en postgresql >> > donde la clave primaria es un campo de tipo serial. En otras bases se >> > traduciría en un "autonumerico"... cuando hago el insert no se serializa >> > automaticamente... >> > por ejemplo tengo: >> > >> > INSERT INTO com.bultos(id, bulto, bulto_corto) VALUES (?, ?, ?); >> >> >> Al crear la tabla asignas a id el tipo SERIAL, luego en el insert no le >> pases el valor para el campo id. >> >> >> CREATE TABLE com.bultos( >> id SERIAL PRIMARY KEY, >> bulto integer, >> bulto_corto integer >> >> ); >> >> INSERT INTO com.bultos(bulto, bulto_corto) VALUES (1, 1); >> INSERT INTO com.bultos(bulto, bulto_corto) VALUES (1, 2); >> INSERT INTO com.bultos(bulto, bulto_corto) VALUES (2, 1); >> - >> Enviado a la lista de correo pgsql-es-ayuda ( >> pgsql-es-ayuda@postgresql.org) >> Para cambiar tu suscripción: >> http://www.postgresql.org/mailpref/pgsql-es-ayuda >> > >
Re: [pgsql-es-ayuda] CAMPO SERIAL...
El día 3 de mayo de 2011 07:35, iescriva escribió: > El 03/05/11 13:36, Marcelo Robin escribió: >> Tengo una aplicación en VB6 y resulta que tengo una tabla en postgresql >> donde la clave primaria es un campo de tipo serial. En otras bases se >> traduciría en un "autonumerico"... cuando hago el insert no se serializa >> automaticamente... >> por ejemplo tengo: >> >> INSERT INTO com.bultos(id, bulto, bulto_corto) VALUES (?, ?, ?); > > > Al crear la tabla asignas a id el tipo SERIAL, luego en el insert no le > pases el valor para el campo id. > > > CREATE TABLE com.bultos( > id SERIAL PRIMARY KEY, > bulto integer, > bulto_corto integer > > ); > > INSERT INTO com.bultos(bulto, bulto_corto) VALUES (1, 1); > INSERT INTO com.bultos(bulto, bulto_corto) VALUES (1, 2); > INSERT INTO com.bultos(bulto, bulto_corto) VALUES (2, 1); Aveces es una tablas con una lista grande de campos a insertar, para evitar listar todos, puede usar default en el campo serial: INSERT INTO com.bultos VALUES (default,2, 1); - Enviado a la lista de correo pgsql-es-ayuda (pgsql-es-ayuda@postgresql.org) Para cambiar tu suscripción: http://www.postgresql.org/mailpref/pgsql-es-ayuda
Re: [pgsql-es-ayuda] CAMPO SERIAL...
Tomando como default me lo toma como serial ? Estaba viendo que tengo el id definido de otra forma... CREATE TABLE com.bultos ( id bigint NOT NULL, bulto text, bulto_corto text, CONSTRAINT bultos_pkey PRIMARY KEY (id) ) WITHOUT OIDS; ALTER TABLE com.bultos OWNER TO ariel; GRANT ALL ON TABLE com.bultos TO ariel WITH GRANT OPTION; GRANT ALL ON TABLE com.bultos TO public; El 3 de mayo de 2011 10:30, Julio Cesar Rodriguez Dominguez < jura...@gmail.com> escribió: > El día 3 de mayo de 2011 07:35, iescriva escribió: > > El 03/05/11 13:36, Marcelo Robin escribió: > >> Tengo una aplicación en VB6 y resulta que tengo una tabla en postgresql > >> donde la clave primaria es un campo de tipo serial. En otras bases se > >> traduciría en un "autonumerico"... cuando hago el insert no se serializa > >> automaticamente... > >> por ejemplo tengo: > >> > >> INSERT INTO com.bultos(id, bulto, bulto_corto) VALUES (?, ?, ?); > > > > > > Al crear la tabla asignas a id el tipo SERIAL, luego en el insert no le > > pases el valor para el campo id. > > > > > > CREATE TABLE com.bultos( > > id SERIAL PRIMARY KEY, > > bulto integer, > > bulto_corto integer > > > > ); > > > > INSERT INTO com.bultos(bulto, bulto_corto) VALUES (1, 1); > > INSERT INTO com.bultos(bulto, bulto_corto) VALUES (1, 2); > > INSERT INTO com.bultos(bulto, bulto_corto) VALUES (2, 1); > > Aveces es una tablas con una lista grande de campos a insertar, para > evitar listar todos, puede usar default en el campo serial: > INSERT INTO com.bultos VALUES (default,2, 1); > - > Enviado a la lista de correo pgsql-es-ayuda (pgsql-es-ayuda@postgresql.org > ) > Para cambiar tu suscripción: > http://www.postgresql.org/mailpref/pgsql-es-ayuda >
Re: [pgsql-es-ayuda] CAMPO SERIAL...
> El 3 de mayo de 2011 10:30, Julio Cesar Rodriguez Dominguez > escribió: >> >> El día 3 de mayo de 2011 07:35, iescriva escribió: >> > El 03/05/11 13:36, Marcelo Robin escribió: >> >> Tengo una aplicación en VB6 y resulta que tengo una tabla en postgresql >> >> donde la clave primaria es un campo de tipo serial. En otras bases se >> >> traduciría en un "autonumerico"... cuando hago el insert no se >> >> serializa >> >> automaticamente... >> >> por ejemplo tengo: >> >> >> >> INSERT INTO com.bultos(id, bulto, bulto_corto) VALUES (?, ?, ?); >> > >> > >> > Al crear la tabla asignas a id el tipo SERIAL, luego en el insert no le >> > pases el valor para el campo id. >> > >> > >> > CREATE TABLE com.bultos( >> > id SERIAL PRIMARY KEY, >> > bulto integer, >> > bulto_corto integer >> > >> > ); >> > >> > INSERT INTO com.bultos(bulto, bulto_corto) VALUES (1, 1); >> > INSERT INTO com.bultos(bulto, bulto_corto) VALUES (1, 2); >> > INSERT INTO com.bultos(bulto, bulto_corto) VALUES (2, 1); >> >> Aveces es una tablas con una lista grande de campos a insertar, para >> evitar listar todos, puede usar default en el campo serial: >> INSERT INTO com.bultos VALUES (default,2, 1); >> - >> Enviado a la lista de correo pgsql-es-ayuda >> (pgsql-es-ayuda@postgresql.org) >> Para cambiar tu suscripción: >> http://www.postgresql.org/mailpref/pgsql-es-ayuda > > El día 3 de mayo de 2011 08:51, Marcelo Robin escribió: > Tomando como default me lo toma como serial ? > Estaba viendo que tengo el id definido de otra forma... > CREATE TABLE com.bultos > ( > id bigint NOT NULL, > bulto text, > bulto_corto text, > CONSTRAINT bultos_pkey PRIMARY KEY (id) > ) > WITHOUT OIDS; > ALTER TABLE com.bultos OWNER TO ariel; > GRANT ALL ON TABLE com.bultos TO ariel WITH GRANT OPTION; > GRANT ALL ON TABLE com.bultos TO public; > > No, la columna debió de ser definido como serial, pero en su defecto puedes crearlo. CREATE SEQUENCE tabla_id_seq; ALTER TABLE tabla ALTER COLUMN id SET DEFAULT nextval('tabla_id_seq'); - Enviado a la lista de correo pgsql-es-ayuda (pgsql-es-ayuda@postgresql.org) Para cambiar tu suscripción: http://www.postgresql.org/mailpref/pgsql-es-ayuda
Re: [pgsql-es-ayuda] CAMPO SERIAL...
Excerpts from Marcelo Robin's message of mar may 03 10:51:18 -0300 2011: > Tomando como default me lo toma como serial ? Sí (si es que el default es el nextval de la secuencia). > Estaba viendo que tengo el id definido de otra forma... > > CREATE TABLE com.bultos > ( > id bigint NOT NULL, > bulto text, > bulto_corto text, > CONSTRAINT bultos_pkey PRIMARY KEY (id) > ) > WITHOUT OIDS; > ALTER TABLE com.bultos OWNER TO ariel; > GRANT ALL ON TABLE com.bultos TO ariel WITH GRANT OPTION; > GRANT ALL ON TABLE com.bultos TO public; Más abajo debería haber un CREATE SEQUENCE y un ALTER SEQUENCE .. OWNED BY además de un ALTER COLUMN / SET DEFAULT que ligan la secuencia con la columna. Eso hace que el campo sea SERIAL. -- Álvaro Herrera - Enviado a la lista de correo pgsql-es-ayuda (pgsql-es-ayuda@postgresql.org) Para cambiar tu suscripci�n: http://www.postgresql.org/mailpref/pgsql-es-ayuda