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.