Club Delphi  
    Paypal   FTP   CCD     Buscar   Trucos   Trabajo   Foros

Retroceder   Foros Club Delphi > Bases de datos > PostgreSQL
Registrarse FAQ Miembros Calendario Guía de estilo Temas de Hoy

 
 
Herramientas Buscar en Tema Desplegado
  #4  
Antiguo 03-02-2009
Avatar de movorack
[movorack] movorack is offline
Miguel A. Valero
 
Registrado: feb 2007
Ubicación: Bogotá - Colombia
Posts: 1.346
Poder: 22
movorack Va camino a la famamovorack Va camino a la fama
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...

Código SQL [-]
CREATE TABLE schema.table (
  field_id  SERIAL ...
);

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...

Código SQL [-]
CREATE OR REPLACE FUNCTION "public"."getnextid" (
  tablename varchar,
  fieldname varchar,
  incvalue NUMERIC
) RETURNS NUMERIC AS
$body$
DECLARE
 rec RECORD;
 var_max NUMERIC;
BEGIN
  FOR rec IN EXECUTE 'Select CAST(max('|| FieldName ||') AS NUMERIC) as maxid from ' || TableName LOOP
   var_max := rec.maxid::NUMERIC;
  END LOOP;
 
  IF var_max IS NULL THEN
   RETURN 1;
  ELSE
   RETURN var_max + IncValue;
  END IF;
 
  RETURN 1;
END;
$body$
LANGUAGE 'plpgsql' VOLATILE CALLED ON NULL INPUT SECURITY INVOKER;

y pues así las uso...

Código SQL [-]
CREATE TABLE schema.table (
  field_id  INTEGER ... DEFAULT getnextid('schema.table', 'field_id', 1) ...
);

----

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
Responder Con Cita
 



Normas de Publicación
no Puedes crear nuevos temas
no Puedes responder a temas
no Puedes adjuntar archivos
no Puedes editar tus mensajes

El código vB está habilitado
Las caritas están habilitado
Código [IMG] está habilitado
Código HTML está deshabilitado
Saltar a Foro

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


La franja horaria es GMT +2. Ahora son las 17:51:17.


Powered by vBulletin® Version 3.6.8
Copyright ©2000 - 2026, Jelsoft Enterprises Ltd.
Traducción al castellano por el equipo de moderadores del Club Delphi
Copyright 1996-2007 Club Delphi