Re: problema con autoincremento nextval

From: barbara cioppa <barbara_cioppa(at)yahoo(dot)com>
To: Alessio Gennari <alessio(dot)gennari78(at)gmail(dot)com>
Cc: Torello Querci <tquerci(at)gmail(dot)com>, "pgsql-it-generale(at)postgresql(dot)org" <pgsql-it-generale(at)postgresql(dot)org>
Subject: Re: problema con autoincremento nextval
Date: 2012-01-18 11:22:05
Message-ID: 1326885725.87882.YahooMailNeo@web45106.mail.sp1.yahoo.com
Views: Raw Message | Whole Thread | Download mbox | Resend email
Thread:
Lists: pgsql-it-generale

Grazie ragazzi. Era l'apice il problema. Ora funziona! Almeno questa è sistemata :)))

________________________________
From: Alessio Gennari <alessio(dot)gennari78(at)gmail(dot)com>
To: barbara cioppa <barbara_cioppa(at)yahoo(dot)com>
Cc: Torello Querci <tquerci(at)gmail(dot)com>; "pgsql-it-generale(at)postgresql(dot)org" <pgsql-it-generale(at)postgresql(dot)org>
Sent: Wednesday, January 18, 2012 11:49 AM
Subject: Re: [pgsql-it-generale] problema con autoincremento nextval

Ha ragione lui. Il tipo serial non esiste nel DBMS, è solo un tipo "virtuale" che sta nel pgAdmin che se viene selezionato ti crea una colonna di tipo int con relativo sequence.

Per fare l'alter devi usare un'altra sintassi che dovrebbe essere questa:

ALTER table "Pratiche".pratica
ALTER column id SET default nextval('nome_schema.nome_sequence'::regclass)

Se per caso non trovi il sequence dopo la creazione della prima tabella con il campo serial, prova ad inserire una riga e vedrai che comparirà il sequence.

Per il postgres ti devo dire che all'inizio può dare un po' di grattacapi perché è molto simile alla filosofia di Oracle, ma alla lunga devo proprio dire che dà un sacco di soddisfazioni.

Fammi sapere.

Ciao.

Alessio

2012/1/18 barbara cioppa <barbara_cioppa(at)yahoo(dot)com>

in teoria con
>ALTER table "Pratiche".pratica
>ALTER COLUMN id type serial;
>dovrebbe funzionare ma mi dice che il tipo serial non esiste!
>Inizio a pensare di cambiare DBMS :((
>
>
>
>________________________________
> From: Alessio Gennari <alessio(dot)gennari78(at)gmail(dot)com>
>To: barbara cioppa <barbara_cioppa(at)yahoo(dot)com>
>Cc: Torello Querci <tquerci(at)gmail(dot)com>; "pgsql-it-generale(at)postgresql(dot)org" <pgsql-it-generale(at)postgresql(dot)org>
>Sent: Wednesday, January 18, 2012 11:15 AM
>
>Subject: Re: [pgsql-it-generale] problema con autoincremento nextval
>
>
>
>Credo sia una limitazione del pgAdminIII.
>
>
>L'unico modo per cambiare quel campo è un alter. Però, se quel campo è oggetto di una foreign key proveniente da un'altra tabella, credo che l'alter non possa funzionare.
>
>
>
>
>2012/1/18 barbara cioppa <barbara_cioppa(at)yahoo(dot)com>
>
>Salve ancora,
>>ho aggiornato pgAdmin III alla 1.14.1 , il problema è che se aggiungo un campo posso metterlo di tipo serial,mentre non posso cambiare il tipo di ID in nessun modo, nè con l'interfaccia nè con l'sql.
>>Questo non l'ho capito. Inoltre non posso eliminare l'id perchè da quel campo dipendono diverse tabelle per la referential integrity quindi dovfrei cancellare i riferimenti in cascata (che non mi ricordo nemmeno la sintassi).
>>Perchè non posso cambiare il tipo in serial? Non me lo da come opzione sui tipi di dato.
>>
>>
>>
>>
>>
>>________________________________
>> From: Torello Querci <tquerci(at)gmail(dot)com>
>>To: Alessio Gennari <alessio(dot)gennari78(at)gmail(dot)com>
>>
>>Cc: barbara cioppa <barbara_cioppa(at)yahoo(dot)com>; "pgsql-it-generale(at)postgresql(dot)org" <pgsql-it-generale(at)postgresql(dot)org>
>>Sent: Friday, January 13, 2012 2:22 PM
>>
>>Subject: Re: [pgsql-it-generale] problema con autoincremento nextval
>>
>>
>>
>>
>>
>>
>>Il giorno 13 gennaio 2012 14:12, Alessio Gennari <alessio(dot)gennari78(at)gmail(dot)com> ha scritto:
>>
>>Ciao Barbara,
>>>innanzitutto sarebbe importante sapere che versione di postgres stai utilizzando, comunque prova a fare così:
>>>
>>>
>>>ID integer not null default nextval( "Pratiche"."numID"::regclass)
>>>
>>>
>>>Questa è la sintassi per il postgres 9.
>>>
>>>
>>>Per quanto riguarda l'utilizzo dello stesso sequence su due tabelle differenti non so se abbia senso, io personalmente non l'ho mai fatto. Se si potesse fare comunque il sequence andrebbe sempre in avanti ignorando la tabella da cui è stato invocato. In parole povere non potrai mai avere uno stesso id in entrambe le tabelle.
>>>
>>>
>>Se può fare e il comportamento è proprio quello da te descritto, ovvero viene staccato un ID univoco indipendente dalla tabella dove è stato usato.
>>
>>
>>Esistono molti casi in cui questo può essere utile, per esempio quando ci sono tipi diversi di "documenti" che risiedono in tabelle diverse e che devono essere identificati in modo univoco.
>>Vero che si può fare in altri modi ma l'uso delle sequence usate in più tabelle semplifica molto la vita.
>>Ovviamente il fatto che si possa fare non significa che si debba fare.
>>
>>
>>Saluti
>>
>>
>>
>>
>
>
>

In response to

Browse pgsql-it-generale by date

  From Date Subject
Next Message gabriele.bartolini 2012-07-09 15:26:48 Rilasciato Barman 1.0, "Backup and Recovery Manager" per PostgreSQL
Previous Message maurizio.totti 2012-01-18 11:03:46 Re: problema con autoincremento nextval