Posted By: Koles (...) on 'CZdatabases'
Title:     Re: auto_increment v Postgresql
Date:      Sat Oct 30 18:51:20 1999

Nekdy muze prehnana snaha o omezovani quotingu zpusobovat
ujmu na srozumitelnosti, pro jistotu doplnim body A) a B)
z puvodniho PaJaSoftova prispevku:

> > > a) pouzit klasicke sekvence, tedy create sequence, create table... 
> > > (...., int a default nextval ('seq'));...                       
> > > b) pouzit typ serial          

> > > Zpusob A) je z hlediska DDL cisty, zpusob B) je specialita PgSQL a
> > > jinych,
> > > pri prenosu mohou nastat potize...
> >   ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
> > Neni pravda, serial v PgSQL je pouze "makro", ktere vygeneruje
> > korektni sekvenci. Tj. pri dumpu ti vyjede korektni definice 
> > pomoci sekvence a nikoli serial.
> 
>      A co ma pg_dump spolecneho s DDL pripadne s typem serial? To, ze
> pg_dump detekuje tuto vec takto je o necem jinem...

pg_dump je utilitka, po niz pravdepodobne sahnes, pokud se budes
snazit databazi prevest odnekud nekam jinam. Jak jiste vis, funguje
tak, ze ti vypise nejjednodussi posloupnost SQL prikazu nutne 
k zaneseni aktualnich dat do ciste databaze.

Dovoluji si proto tvrdit, ze potize pri prenosu (v puvodnim "> > >"
textu podtrzeno) ve vetsine pripadu (tj. vzdy pri pouziti prikazu
pg_dump) nenastanou.

> je to stejne jako bys 
> tvrdil, ze
> primary key je pouze makro... - samysli se nad tim, co rikas... 

Zamyslim se nad tim, co jsem napsal, jako bonus pridavam
zamysleni nad tim, co pises ty, a zjistuji, ze

1, primary key neni pouze makro, protoze vytvari primarni
   klic.
2, "datovy typ" serial je makro, ponevadz nevytvari zadny
   datovy typ "serial", ale klasickou sekvenci (presne tak,
   jak v bodu a) puvodniho prispevku navrhujes.
   O tom je mozne se presvedcit jakymikoli trivialnimi 
   prostredky (d v psql, pripadne pg_dump).

> PS: Vem si primary key, pripadne foreignkey definici v tabulce a pak si dej 
> dump... chces rici, ze je to ekvivalent?

Huh? Ekvivalent ceho? Vubec ti nerozumim. 

Podstatne je, ze "serial" neni datovy typ, ale pouze
postgresove makro, ktere vytvari zcela standardni
a prenositelne sekvence.

  Pavel

Search the boards