diff options
author | Bruce Momjian <bruce@momjian.us> | 2001-09-07 21:57:53 +0000 |
---|---|---|
committer | Bruce Momjian <bruce@momjian.us> | 2001-09-07 21:57:53 +0000 |
commit | bd9b32803bee2a85e41deb5e546c3b0e16912e2b (patch) | |
tree | 0528a43344227ddbf5e65a466996c5a3089917c0 /doc/src | |
parent | 68e190cfa4d3f121de310fbbad89b4f26fb9198f (diff) | |
download | postgresql-bd9b32803bee2a85e41deb5e546c3b0e16912e2b.tar.gz postgresql-bd9b32803bee2a85e41deb5e546c3b0e16912e2b.zip |
Here is my much-promised patch to let people add UNIQUE constraints after
table creation time. Big deal you say - but this patch is the basis of the
next thing which is adding PRIMARY KEYs after table creation time. (Which
is currently impossible without twiddling catalogs)
Rundown
-------
* I have made the makeObjectName function of analyze.c non-static, and
exported it in analyze.h
* I have included analyze.h and defrem.h into command.c, to support
makingObjectNames and creating indices
* I removed the 'case CONSTR_PRIMARY' clause so that it properly fails and
says you can't add primary keys, rather than just doing nothing and
reporting nothing!!!
* I have modified the docs.
Algorithm
---------
* If name specified is null, search for a new valid constraint name. I'm
not sure if I should "lock" my generated name somehow tho - should I open
the relation before doing this step?
* Open relation in access exclusive mode
* Check that the constraint does not already exist
* Define the new index
* Warn if they're doubling up on an existing index
Christopher Kings-Lynne
Diffstat (limited to 'doc/src')
-rw-r--r-- | doc/src/sgml/ref/alter_table.sgml | 15 |
1 files changed, 11 insertions, 4 deletions
diff --git a/doc/src/sgml/ref/alter_table.sgml b/doc/src/sgml/ref/alter_table.sgml index f5f22cb85dd..eb769468c66 100644 --- a/doc/src/sgml/ref/alter_table.sgml +++ b/doc/src/sgml/ref/alter_table.sgml @@ -1,5 +1,5 @@ <!-- -$Header: /cvsroot/pgsql/doc/src/sgml/ref/alter_table.sgml,v 1.26 2001/09/03 12:57:49 petere Exp $ +$Header: /cvsroot/pgsql/doc/src/sgml/ref/alter_table.sgml,v 1.27 2001/09/07 21:57:53 momjian Exp $ Postgres documentation --> @@ -211,9 +211,9 @@ ALTER TABLE <replaceable class="PARAMETER">table</replaceable> </para> <para> - In the current implementation, only FOREIGN KEY and CHECK constraints can - be added to a table. To create a unique constraint, create - a unique index (see <xref linkend="SQL-CREATEINDEX" + In the current implementation, only UNIQUE, FOREIGN KEY and CHECK constraints can + be added to a table. To create a primary constraint, create + a unique, not null index (see <xref linkend="SQL-CREATEINDEX" endterm="SQL-CREATEINDEX-title">). </para> @@ -297,6 +297,13 @@ ALTER TABLE distributors DROP CONSTRAINT zipchk ALTER TABLE distributors ADD CONSTRAINT distfk FOREIGN KEY (address) REFERENCES addresses(address) MATCH FULL </programlisting> </para> + + <para> + To add a (multi-column) unique constraint to a table: + <programlisting> +ALTER TABLE distributors ADD CONSTRAINT dist_id_zipcode_key UNIQUE (dist_id, zipcode) + </programlisting> + </para> </refsect1> <refsect1 id="R1-SQL-ALTERTABLE-3"> |