Add item for changing a column's data type.

This commit is contained in:
Bruce Momjian 2003-05-26 19:25:20 +00:00
parent 6923ea2b86
commit 90903069e9
2 changed files with 31 additions and 9 deletions

21
doc/FAQ
View File

@ -1,7 +1,7 @@
Frequently Asked Questions (FAQ) for PostgreSQL Frequently Asked Questions (FAQ) for PostgreSQL
Last updated: Tue Apr 22 14:02:41 EDT 2003 Last updated: Mon May 26 15:25:04 EDT 2003
Current maintainer: Bruce Momjian (pgman@candle.pha.pa.us) Current maintainer: Bruce Momjian (pgman@candle.pha.pa.us)
@ -60,7 +60,8 @@
4.1) What is the difference between binary cursors and normal cursors? 4.1) What is the difference between binary cursors and normal cursors?
4.2) How do I SELECT only the first few rows of a query? 4.2) How do I SELECT only the first few rows of a query?
4.3) How do I get a list of tables or other things I can see in psql? 4.3) How do I get a list of tables or other things I can see in psql?
4.4) How do you remove a column from a table? 4.4) How do you remove a column from a table, or change it's data
type?
4.5) What is the maximum size for a row, a table, and a database? 4.5) What is the maximum size for a row, a table, and a database?
4.6) How much database disk space is required to store data from a 4.6) How much database disk space is required to store data from a
typical text file? typical text file?
@ -644,10 +645,10 @@
the -E option so it will print out the queries it uses to execute the the -E option so it will print out the queries it uses to execute the
commands you give. commands you give.
4.4) How do you remove a column from a table? 4.4) How do you remove a column from a table, or change its data type?
This functionality was added in release 7.3 with ALTER TABLE DROP DROP COLUMN functionality was added in release 7.3 with ALTER TABLE
COLUMN. In earlier versions, you can do this: DROP COLUMN. In earlier versions, you can do this:
BEGIN; BEGIN;
LOCK TABLE old_table; LOCK TABLE old_table;
SELECT ... -- select all columns but the one you want to remove SELECT ... -- select all columns but the one you want to remove
@ -657,6 +658,16 @@
ALTER TABLE new_table RENAME TO old_table; ALTER TABLE new_table RENAME TO old_table;
COMMIT; COMMIT;
To change the data type of a column, do this:
BEGIN;
ALTER TABLE tab ADD COLUMN new_col new_data_type;
UPDATE tab SET new_col = CAST(old_col AS new_data_type);
ALTER TABLE DROP COLUMN old_col;
COMMIT;
You might then want to do VACUUM FULL tab to reclaim the disk space
used by the expired rows.
4.5) What is the maximum size for a row, a table, and a database? 4.5) What is the maximum size for a row, a table, and a database?
These are the limits: These are the limits:

View File

@ -10,7 +10,7 @@
alink="#0000ff"> alink="#0000ff">
<H1>Frequently Asked Questions (FAQ) for PostgreSQL</H1> <H1>Frequently Asked Questions (FAQ) for PostgreSQL</H1>
<P>Last updated: Tue Apr 22 14:02:41 EDT 2003</P> <P>Last updated: Mon May 26 15:25:04 EDT 2003</P>
<P>Current maintainer: Bruce Momjian (<A href= <P>Current maintainer: Bruce Momjian (<A href=
"mailto:pgman@candle.pha.pa.us">pgman@candle.pha.pa.us</A>)<BR> "mailto:pgman@candle.pha.pa.us">pgman@candle.pha.pa.us</A>)<BR>
@ -87,7 +87,7 @@
<A href="#4.3">4.3</A>) How do I get a list of tables or other <A href="#4.3">4.3</A>) How do I get a list of tables or other
things I can see in <I>psql</I>?<BR> things I can see in <I>psql</I>?<BR>
<A href="#4.4">4.4</A>) How do you remove a column from a <A href="#4.4">4.4</A>) How do you remove a column from a
table?<BR> table, or change it's data type?<BR>
<A href="#4.5">4.5</A>) What is the maximum size for a row, a <A href="#4.5">4.5</A>) What is the maximum size for a row, a
table, and a database?<BR> table, and a database?<BR>
<A href="#4.6">4.6</A>) How much database disk space is required <A href="#4.6">4.6</A>) How much database disk space is required
@ -822,9 +822,9 @@
execute the commands you give.</P> execute the commands you give.</P>
<H4><A name="4.4">4.4</A>) How do you remove a column from a <H4><A name="4.4">4.4</A>) How do you remove a column from a
table?</H4> table, or change its data type?</H4>
<P>This functionality was added in release 7.3 with <P><SMALL>DROP COLUMN</SMALL> functionality was added in release 7.3 with
<SMALL>ALTER TABLE DROP COLUMN</SMALL>. In earlier versions, <SMALL>ALTER TABLE DROP COLUMN</SMALL>. In earlier versions,
you can do this:</P> you can do this:</P>
<PRE> <PRE>
@ -838,6 +838,17 @@
COMMIT; COMMIT;
</PRE> </PRE>
<P>To change the data type of a column, do this:</P>
<PRE>
BEGIN;
ALTER TABLE tab ADD COLUMN new_col <i>new_data_type</i>;
UPDATE tab SET new_col = CAST(old_col AS <i>new_data_type</i>);
ALTER TABLE DROP COLUMN old_col;
COMMIT;
</PRE>
<P>You might then want to do <I>VACUUM FULL tab</I> to reclaim the
disk space used by the expired rows.</P>
<H4><A name="4.5">4.5</A>) What is the maximum size for a row, a <H4><A name="4.5">4.5</A>) What is the maximum size for a row, a
table, and a database?</H4> table, and a database?</H4>