Table-Constraint
Adds a constraint to table metadata. You can specify table constraints with
, or add a constraint to an existing table with CREATE TABLE
. For details, see Setting Constraints in the Administrator's Guide.ALTER TABLE
Adding a constraint to a table that is referenced in a view does not affect the view.
Syntax
[ CONSTRAINT constraint-name ] { ... PRIMARY KEY (column[,... ]) [ ENABLED | DISABLED ] ... | FOREIGN KEY (column[,... ] ) REFERENCES table [ (column[,...]) ] ... | UNIQUE (column[,...]) [ ENABLED | DISABLED ] ... | CHECK (expression) [ ENABLED | DISABLED ] }
Parameters
CONSTRAINT constraint‑name
|
Assigns a name to the constraint. Vertica recommends that you name all constraints. |
PRIMARY KEY
|
Defines one or more PRIMARY KEY (column[,...]) [ ENABLED | DISABLED]
You can qualify this constraint with the keyword If you do not name a primary key constraint, Vertica assigns the name |
FOREIGN KEY
|
Adds a referential integrity constraint defining one or more columns as foreign keys as follows: FOREIGN KEY (column[,... ]) REFERENCES table [(column[,... ])] If you omit column, Vertica references the primary key in table. If you do not name a foreign key constraint, Vertica assigns the name Adding a foreign key constraint requires the following privileges (in addition to privileges also required by ALTER TABLE):
|
UNIQUE
|
Specifies that the data in a column or group of columns is unique with respect to all table rows, as follows: UNIQUE (column[,...]) [ENABLED | DISABLED]
You can qualify this constraint with the keyword If you do not name a unique constraint, Vertica assigns the name |
CHECK
|
Specifies a check condition as an expression that returns a Boolean value, as follows: CHECK (expression) [ENABLED | DISABLED]
You can qualify this constraint with the keyword If you do not name a check constraint, Vertica assigns the name |
Privileges
Non-superusers: table owner, or the following privileges:
- USAGE on schema
- ALTER on table
- SELECT on table to enable or disable constraint enforcement
Enforcing Constraints
A table can specify whether Vertica automatically enforces a primary key, unique key or check constraint with the keyword ENABLED
or DISABLED
. If you omit ENABLED
or DISABLED
, Vertica determines whether to enable the constraint automatically by checking the appropriate configuration parameter:
EnableNewPrimaryKeysByDefault
EnableNewUniqueKeysByDefault
EnableNewCheckConstraintsByDefault
For details, see Constraint Enforcement.
Examples
The following example creates a table (t01
) with a primary key constraint.
CREATE TABLE t01 (id int CONSTRAINT sampleconstraint PRIMARY KEY); CREATE TABLE
This example creates the same table without the constraint, and then adds the constraint with ALTER TABLE ADD CONSTRAINT
CREATE TABLE t01 (id int); CREATE TABLE ALTER TABLE t01 ADD CONSTRAINT sampleconstraint PRIMARY KEY(id); WARNING 2623: Column "id" definition changed to NOT NULL ALTER TABLE
The following example creates a table (addapk
) with two columns, adds a third column to the table, and then adds a primary key constraint on the third column.
=> CREATE TABLE addapk (col1 INT, col2 INT); CREATE TABLE => ALTER TABLE addapk ADD COLUMN col3 INT; ALTER TABLE => ALTER TABLE addapk ADD CONSTRAINT col3constraint PRIMARY KEY (col3) ENABLED; WARNING 2623: Column "col3" definition changed to NOT NULL ALTER TABLE
Using the sample table addapk
, check that the primary key constraint is enabled (is_enabled
is t
).
=> SELECT constraint_name, column_name, constraint_type, is_enabled FROM PRIMARY_KEYS WHERE table_name IN ('addapk'); constraint_name | column_name | constraint_type | is_enabled -----------------+-------------+-----------------+------------ col3constraint | col3 | p | t (1 row)
This example disables the constraint using ALTER TABLE ALTER CONSTRAINT
.
=> ALTER TABLE addapk ALTER CONSTRAINT col3constraint DISABLED;
Check that the primary key is now disabled (is_enabled
is f
).
=> SELECT constraint_name, column_name, constraint_type, is_enabled FROM PRIMARY_KEYS WHERE table_name IN ('addapk'); constraint_name | column_name | constraint_type | is_enabled -----------------+-------------+-----------------+------------ col3constraint | col3 | p | f (1 row)
For a general discussion of constraints, see Constraints. For additional examples of creating and naming constraints, see Naming Constraints.