Posted By: PaJaSoft (Menhir Mover & Linux MAN) on 'CZdatabases'
Title: Re: auto_increment v Postgresql
Date: Wed Nov 3 22:05:12 1999
> > Zda-li je sekvence pouze makro u jednoho SQL serveru,
> > kdo rika, ze musi stejna implementace byt i u jineho?
>
> Nikdo. Rozhodne ne ja. Dokonce ani nerikam, ze sekvence
> je makro u pgSQL, tvrdil jsem to o "typu" serial.
Jenze i tak potom muzes rikat, ze primary key je u PgSQL makro...
> > Omezenost pg_dump je hodne velka, funguje dobre pouze pro PgSQL,
> > vim o nekolika systemech, kde po nahrazeni tohoto Free engine bylo nutne
>
> "Vim o nekolika xxxx" je slovni vata, kterou se stridavymi
> uspechy pouzivas uz nekolik let :)
No vis, ne kazdemu hned v uvodu rikam napr. to, ze jsem se podilel na
vyvoji sberoveho systemu pro technologicke procesy napr. v Jaderne elektrarne
Dukovany, Temeline, ze puvodni moje reseni je zmrseno a v podstate ukradeno na
www.reax.cz/music (coz bohuzel po pravni strance nemohu dokazat:-(,
pratele vsak vedi o co slo) atd... Takze tim XXX systemu myslim naprosto
konkretni projekty u kterych jsem asistoval nebo na kterych jsem se primo
vyvojove podilel a nektere nejsou ani zdaleka verejne abych se o nich vubec
smel zminovat zde (doufam, ze timto jsem nyni nerekl nejake tajemstvi).
> > Jenze u serial cislo pretece
> > a jsi v pr. U DDL Ti to neni dovoleno,
>
> Toto je naprosto nesmyslna veta. U serial nemuze nic preteci,
> protoze serial nic neni :)
'-) - opet narazim na jistou omezenost. Serial jsi rekl, ze je makro, mam
za to, ze int4 ma jista omezeni... co se stane pokud ten int4 (uplne putna
je, zda-li je signed nebo unsigned) pretece? Mame zase 1,2,3,... jenze
primarni klic, ktery musi byt vzdy UNIQUE ti takoveto 'pretecene' cislo
nevezme - v podstate se da rici, ze do tabulky s primarnim klicem typu int4
nevlozis vice jak 'int4' zaznamu. Ovsem pokud pouzijes serial, pak prichazis o
UNIQUE a tim padem to 'auto-increment' je hezke, ale jen do toho poctu
int4... pak dostanes nesmysly... takze uz vidis, ze sequence + primary key je
zcela neco jineho nez serial?
Pravda, jsou datove modely, kde fyzicke omezeni int4 nevadi, stejne jako
nesmi vadit 2GB / tabulka, otazka je, kdo to ohlida pote, co to pretece a
jake nasledky si vyvojar privodi...
> Pokud bys trval na tom, ze serial neni makro, ale opravdovy
> datovy typ, tak je to jediny ciselny datovy typ, ktery
> pretyct nemuze. Proc?
Uz jsem vysvetlil...
> Co dela serial, se muzeme presvetcit sami.
>
> V psql si v testovaci db vytvorime jednoduchou tabulku prikazem:
>
> test=> create table test (id serial, name char(12), primary key (id));
>
> (coz mimo jine psql okomentuje zminkama o tom, co nam pritom
> implicitne vyrobil).
>
> A ted se kouknem, co nam to vlastne vzniklo:
>
> pg_dump test
> CREATE SEQUENCE "test_id_seq" start 1 increment 1 maxvalue 2147483647
> minvalue
> 1 cache 1 ;
> CREATE TABLE "test" (
> "id" int4 DEFAULT nextval('test_id_seq') NOT NULL,
> "name" character(12));
> [a tady jeste nasledujou data a indexy]
>
> Tak. Tady se nam pgSQL sveruje s tim, ze pouzitim pseudotypu
> "serial" programator urcite myslel zcela korektni DDL
> vytvarejici auto inkrementujici se polozku za pomoci sekvence.
Hmm.. stale mi v tom chybi to UNIQUE...
> Co tady podle tebe bude pretykat? Co je neprenostitelne?
> Chapes uz rozdil mezi auto_incrementem v mysql a serial
> v pgsql?
Rozdil? Oboji je nestandardni rozsireni SQL, ktere neni podporovano nikde
jinde a slouzi pouze omezene skupine vyvojaru, kteri se naucili programovat
tak hura na projekty... asi jako umim klikat mysi hura na vizualni
programovani. Pokud uvazuji o vaznejsich projektech a chteji je prodat
seriozni firme budou si holt muset zvyknout dusledne dbat maximalni
prenositelnosti (nebo budou pro kazdeho zakaznika prepisovat 60% kodu?) a
dodrzovani standardu...
BTW ja jsem od zacatku doporucoval DDL variantu, o serial jsem se zminil
jen v te souvislosti, ze pro pocatecni experiment je rychlejsi (upisu se
mene)...
..s usmevem a laskou jde vsechno lip, nezapominejte na to v zivote..
PaJaSoft