Skip site navigation (1) Skip section navigation (2)

Re: problema con autoincremento nextval

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>
Subject: Re: problema con autoincremento nextval
Date: 2012-01-18 10:49:46
Message-ID: CAG0sfBUi8D4Kb0DFQT-uJUEVLuRkrxBMgJWWumB0Z=_6_0Kj9w@mail.gmail.com (view raw or flat)
Thread:
Lists: pgsql-it-generale
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

Responses

pgsql-it-generale by date

Next:From: maurizio.tottiDate: 2012-01-18 11:03:46
Subject: Re: problema con autoincremento nextval
Previous:From: barbara cioppaDate: 2012-01-18 10:23:34
Subject: Re: problema con autoincremento nextval

Privacy Policy | About PostgreSQL
Copyright © 1996-2014 The PostgreSQL Global Development Group