zmena typu polozky
Karel Zak
zakkr na zf.jcu.cz
Středa Červen 30 12:57:19 CEST 2004
On Wed, Jun 30, 2004 at 11:24:53AM +0200, Martin Špirk wrote:
> Dne st 30. června 2004 09:40 Ildiko Takacsova napsal(a):
> > Chcem zmenit polozku psc z varchar(5) na varchar(6)
> >
> > begin;
> > ALTER TABLE tabulka ADD COLUMN psc2 varchar(6);
> > UPDATE tabulka SET psc2=CAST(psc AS varchar(6));
> > ALTER TABLE tabulka DROM COLUMN psc;
> > ALTER TABLE tabulka RENAME COLUMN psc2 TO psc;
> > commit;
> >
> > Kde mam chybu?
>
> 4. radek preklep "DROM"
>
> Jinak ten CAST je imho zbytecny.
> A jeste, pokud se do tabulky nezapisuje prilis mnoho adres bez psc, tak bych
> psc definoval spise jako char(6) misto varchar(6).
Tadle uvaha u PostgreSQL neni moc platna. PostgreSQL interne pouziva
pro vsechny textove veci stejny datovy typ (text) a fixni delky nemaji
vliv na zpusob (rychlost) ukladani. Fixnim je v pripade PostgreSQL
velikost bloku do ktereho se data ukladaji a ktery muze byt spolecny
vetsimu poctu polozek nebo radek. Takze char(n) je vice libustka ze
strany standardu se kterou jsou vice spojeny problemy pri jeho
pouzivani nez nejake opravdove vyhody. Jinak napr. v manulu najdete:
Tip: There are no performance differences between these three types,
apart from the increased storage size when using the blank-padded
type. While character(n) has performance advantages in some other
database systems, it has no such advantages in PostgreSQL. In most
situations text or character varying should be used instead.
Karel
--
Karel Zak <zakkr na zf.jcu.cz>
http://home.zf.jcu.cz/~zakkr/
Další informace o konferenci Test