[Lugge] Re: [Fwd: select max(record) ....]

  • From: "Giorgio Andreoletti" <giorgio.andreoletti@xxxxxxxxxxxxxx>
  • To: <lugge@xxxxxxxxxxxxx>
  • Date: Fri, 29 Mar 2002 23:54:03 +0100

Ciao,

se non ho capito male il tuo problema è che vuoi un indice autoincrementante
in modo da identificare univocamente i vari records, giusto ?
Se è così, allora la soluzione è molto semplice, in quanto PostgreSQL mette
a disposizione le SEQUENCE che sono fatte apposta per questo. Esempio:

CREATE SEQUENCE "ricette_seq" start 1 increment 1 maxvalue 2147483647
minvalue 1  cache 1 ;

CREATE TABLE "ricette" (
    "id_ricette" int4 DEFAULT nextval('ricette_seq'::text) NOT NULL,
    "nome_farmaco" text,
    PRIMARY KEY ("id_ricette")
);

in questo modo, ad ogni record inserto nella tabella ricette verrà assegnato
un campo "id_ricette" intero autoincrementante; nota che quando fai le
insert NON devi passare il campo "id_ricette" in quanto se lo deve generare
da solo (ovviamente!)
Il campo PRIMARY KEY non è obbligatorio, ma ti consiglio di metterlo sempre
in quanto rende più snelle le ricerche fatte dalle SELECT.

spero di esserti stato di aiuto
ciao
Giorgio

============================
Giorgio Andreoletti - mentelocale S.r.l.
responsabile hardware e networking
responsabile sviluppo web
www.mentelocale.it
giorgio.andreoletti@xxxxxxxxxxxxxx
============================

----- Original Message -----
From: "Roberto A. F." <robang@xxxxxxxxx>
To: <lugge@xxxxxxxxxxxxx>
Cc: <p.bongy@xxxxxx>
Sent: Friday, March 29, 2002 7:56 PM
Subject: [Lugge] [Fwd: select max(record) ....]


> Ciao,
>
>   vi invio un quesito di un mio amico che sta sviluppando un SW di
> tarrifazione per farmacie sotto linux e ha questo problema.
>   Io purtroppo non conosco a fondo il postgres e quindi non so dargli
> una risposta esatta
>
> -------- Original Message --------
> Subject: select max(record) ....
> Date: 28 Mar 2002 02:55:45 +0100
> From: Paolo Bongiorno <p.bongy@xxxxxx>
> To: robang@xxxxxxxxx
>
>
> Ciao Roberto scusami se ti disturbo, recentemente ho visto albeggiare
> svariate volte nella determinazione di completare il programma.
>
> [cut]
>
> ... Sono stato prolisso ma volevo raccontarti a che punto sono, adesso
> sono le 2.30 del mattino e butto la spugna perchè da un ora giro attorno
> ad un problema insulso senza trovare la soluzione.
>
>   Per cancellare univocamente la riga selezionata ho numerato ogni tupla
> creando un campo record, alla conferma della ricetta faccio una:
>
>     res = PQexec(connessione,"SELECT MAX(record) from database;");
>     max_record = atoi(PQgetvalue(res,0,0));
>     ++max_record;
>
> ... così ho il valore pronto per il successivo inserimento, il fatto è
> che mi sono accorto solo adesso che il massimo valore che ricava è "9"
> e non ho idea del perchè, se l' ultimo è dieci per lui il più grande è
> sempre "9" percui mi inserisce i record successivi tutti con il 10.
>
>   Cosa ne pensi ?
> --
>     ,__    ,_     ,___   .-------=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-.
>     ||_)   ||\    ||_   /      Proud Member & Master of the LUGGE   |
>     || \   ||¯\   ||¯     linuxgrp: http://lugge.ziobudda.net       |
>     ¯¯  ¯° ¯¯  ¯° ¯¯  °   homepage: http://digilander.iol.it/robang |
> \  Roberto A. Foglietta  reg num : #219348 by the Linux Counter    |
>   `---------------------=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-'
>
> <========----------
>  Prima di scrivere in m-list per favore leggi il regolamento
>  http://lugge.ziobudda.net/soci/manifesto.htm#list
>
> ----------========>
>  Corso Linux Base: martedì 15:00-18:00
>  Incontro in sede: sabato   9:30-12.30
>
>

<========----------
 Prima di scrivere in m-list per favore leggi il regolamento
 http://lugge.ziobudda.net/soci/manifesto.htm#list

----------========>
 Corso Linux Base: martedì 15:00-18:00
 Incontro in sede: sabato   9:30-12.30
 

Other related posts: