Table Constraint Declarations

Following all column definitions, table constraints can be defined. Table constraints are similar to column constraints and are used to specify multi column PRIMARY/UNIQUE KEY, KEY and FOREIGN KEY  definitions. The syntax for specifying table constraints is as follows.

tab_constraint:
        CONSTRAINT constraint_name {key_def | forkey_def}
constraint_name Optional name for a column constraint.
key_def Indexes can be defined to allow for fast navigation or to guarantee no duplicate entries depending on the index type. For more information, refer to the Key (Index) Specification section.
forkey_def Foreign indexes can be defined to allow for fast navigation based on relationship or to validate a correct range of data values for a given field or column. For more information, refer to the Foreign Key (References) Specification section.

Examples

Example 1: Compound Sort Key

create table sponsor(
    name        char(50) primary key,
    addr        char(40),
    city        char(20),
    state       char(2),
    zip         char(5),
    constraint geo_loc key(state, city)
);

The above example creates a sort key (index) that can be used to access the rows of the sponsor table order by state and by city within each state.

Examples 2: Compound Primary Key

create table product 
(
    prod_id smallint primary key,
    prod_desc CHAR(39) NOT NULL,
    price float,
    cost float,
    constraint prod_pricing key (price desc, prod_id)
);

create table outlet ( loc_id char(3) primary key, city char(17) not null, state char(2) not null, region smallint not null,     constraint loc_geo key (state, city) ); create table on_hand ( loc_id char(3) not null references outlet(loc_id), prod_id smallint not null references product, quantity int not null, constraint on_hand_key primary key (loc_id, prod_id) );

The above example create a compound PRIMARY KEY in the on_hand table.

Because the loc_id and prod_id columns are used in the PRIMARY KEY, those values cannot be altered OR contain a NULL value.

This example also contains additional examples of compound sort keys in the outlet and product tables.