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