The PRIMARY KEY constraint, which marks the column that uniquely
identifies each row, is a combination of UNIQUE and NOT NULL
constraints. With this type of constraint, UNIQUE prevents duplicates,
and NOT NULL prevents NULL values
in the column. Figure shows the creation of a
PRIMARY KEY column.
test=> CREATE TABLE primarytest (col INTEGER PRIMARY KEY);
NOTICE: CREATE TABLE/PRIMARY KEY will create implicit index 'primarytest_pkey' for table 'primarytest'
CREATE
test=> \d primarytest
Table "primarytest"
Attribute | Type | Modifier
-----------+---------+----------
col | integer | not null
Index: primarytest_pkey
Notice that an index is created automatically, and the column is defined as NOT NULL.
Just as with UNIQUE, a multicolumn PRIMARY KEY constraint
must be specified on a separate line. In Figure ,
col1 and col2 are combined to form the primary key.
test=> CREATE TABLE primarytest2 (
test(> col1 INTEGER,
test(> col2 INTEGER,
test(> PRIMARY KEY(col1, col2)
test(> );
NOTICE: CREATE TABLE/PRIMARY KEY will create implicit index 'primarytest2_pkey' for table 'primarytest2'
CREATE
A table cannot have more than one PRIMARY KEY specification. Primary keys have special meaning when using foreign keys, which are covered in the next section.