FTP | CCD | Buscar | Trucos | Trabajo | Foros |
|
Registrarse | FAQ | Miembros | Calendario | Guía de estilo | Buscar | Temas de Hoy | Marcar Foros Como Leídos |
|
Herramientas | Buscar en Tema | Desplegado |
#1
|
|||
|
|||
Como crear una sencuencia automática en Postgres 8.2
Sr.
Me gustaría saber unas cuantas cosas: La primera: Como yo puedo asignarle secuencia automatica aun campo creado en Postgres, esto lo necesito por que mi programa necesito que sea multiusuario interconectado en Red. Segundo: Es cierto que la conexión con ADO es lenta? Por que? y como puedo conectar Postgres con Delphi sin utilizar Ado, y cuales son los pasos a seguir con la otra opción de conexión que no sea ADO. saludos, este foro es lo mejor, lo felicito a todos. Elvy Mena. |
#2
|
||||
|
||||
Bueno, esta respuesta llega como un mes tarde, y supongo que Elvy ya habrá resuelto sus problemas... pero escribo a manera simplemente informativa:
Una secuencia en PostgreSQL se define de la siguiente forma: 1. Creas un objeto tipo sequence 2. Creas una función que retorna un tipo de dato trigger 3. Creas un trigger (before Insert) sobre la tabla en cuestión, que llame a esta función. Aquí va un ejemplo: 1. Creas un objeto tipo sequence Código:
CREATE SEQUENCE NombreSequencia INCREMENT 1 MINVALUE 1 MAXVALUE 9223372036854775807 START 14 CACHE 1; Bueno la sequencia puedes crearla solo con Código:
CREATE SEQUENCE NombreSequencia; 2. Creas una función que retorna un tipo de dato trigger Código:
CREATE OR REPLACE FUNCTION NombreFuncion() RETURNS "trigger" AS $BODY$ BEGIN New.NombreCampoSequencia:=nextval('NombreSequencia'); Return NEW; END; $BODY$ LANGUAGE 'plpgsql' VOLATILE; Código:
CREATE TRIGGER NombreTrigger BEFORE INSERT ON NombreTabla FOR EACH ROW EXECUTE PROCEDURE NombreFuncion(); Toda la documentación la encuentras en la ayuda de PostgreSQL. Por otro lado, para Trabajar Delphi y PostgreSQL, te recomiendo los componentes Zeos. Saludos, |
#3
|
|||
|
|||
Gracias... man, aun estaba necesitando esta informacion.
|
#4
|
||||
|
||||
Supertarde...
si aún te sirve el dato tambien puedo aprtarte algo.
Al crear la tabla puedes hacer que postgres cree la secuencia por ti...
El tipo de dato SERIAL es en realidad un entero que ordena a postgres crear la secuencia, el triger y el default en tu tabla. así mismo puedes usar un BIGSERIAL que es el equivalente al BIGINT. ---- Las secuencias son efectivas pero tienen un pequeño problema si las usas en el default (comportamiento por defecto al usar SERIAL y BIGSERIAL). es que cuando intentas hacer un insert y cancelas... la secuencia de todos modos generá un consecutivo. esto es un PROBLEMA para facturas, recibos y consecutivos que no pueden alterarse. ---- Pues no se si es lo más correcto pero tengo esta funcion para obetener el autonumerico...
y pues así las uso...
---- Pues espero que halla sido de tu ayuda. por cierto con los componentes... existen varias formas de conectar a postgres desde delphi... 1. ADO (Ya la vistes) 2. ODBC : En la misma página de PostgreSQL se puede descargar el controlador ODBC para postgres... la conexión la terminas haciendo con BDE desde delphi... 3. conexión directa con ZEOS Lib... bueno ZEOS Lib no lo he trabajado pero me dicen que es muy bueno... 4. si tienes presupuesto.... PostgresDAC... se usa casi de la misma forma que usas BDE y tiene un excelente rendimiento. espero que te ayude en algo... aunque SUPERTARDE.
__________________
Buena caza y buen remar... http://mivaler.blogspot.com |
#5
|
||||
|
||||
Mas tarde aun
Pero peudes crearte la secuencia como te indicaron y en lugar del trigger al hacer tus inserts algo como esto
insert into MyTabla(cveIncrementable, desc) values(secuencia.nextVal, 'algo')
__________________
"Porque es tan idiotamente sorda la fé y tan ciego el que cree?".
|
#6
|
||||
|
||||
No olvides que si trabajas en grandes volumenes
Los triggers(se haga o no tu insert) te merman el tiempo de ejecucion
__________________
"Porque es tan idiotamente sorda la fé y tan ciego el que cree?".
|
#7
|
|||
|
|||
Para secuencias estrictas Yo iria por el Trigger
Efectivamente
Si se trata de secuencias estrictas, donde no debe existir saltos, llamase facturas, albaranes, documentos que revisan las dependencias fiscales Apoyo lo indicado por movorack: Cita:
Saludos. Última edición por ecch fecha: 26-03-2009 a las 00:05:35. Razón: ortografia |
#8
|
||||
|
||||
Para echarle más leños al fuego quisiera añadir que el asunto de las secuencias en postgres me ha dado algunos pequeños problemas cuando trato de hacer en php, especialmente cuando estoy utilizando symfony. En estos casos he tenido que crear las secuencias manualmente porque por alguna razón sólo se ejecutan si tienen el siguiente formato:
Saludos oracle
__________________
El único hombre que no se equivoca es el que nunca hace nada. |
Herramientas | Buscar en Tema |
Desplegado | |
|
|
Temas Similares | ||||
Tema | Autor | Foro | Respuestas | Último mensaje |
Cómo cerrar conexión? Delphi, Zeos y Postgres | mangels | PostgreSQL | 4 | 16-11-2007 16:00:59 |
Como se accesa Postgres ? | rubencho | PostgreSQL | 2 | 19-07-2007 04:00:57 |
Como realizar la conexion con Postgres SQL | alastor | PHP | 2 | 14-08-2006 21:07:18 |
Crear Matricula Automatica | frholguin | SQL | 6 | 03-08-2006 21:11:26 |
Como conectarme a una base de datos como postgres o mysql?? | marys | MySQL | 4 | 08-05-2003 11:34:08 |
|