Определение первичного ключа таблицы
Спецификация
См. спецификацию пункта «Создание таблицы».
Синтаксические правила
-
< Имена столбцов >
должны быть предварительно определены в< спецификации столбцов таблицы >
и не должны повторяться. -
Нельзя создать первичный ключ на один и тот же столбец (или с одинаковым набором столбцов).
-
Атрибуты AUTOINC и PRIMARY KEY совместимы.
create table test(i int autoinc, primary key (i));
Общие правила
-
Конструкция
< первичный ключ >
определяет простой или составной первичный ключ записей таблицы. Столбцы, входящие в состав составного первичного ключа, не допускают NULL-значения. -
Атрибут PRIMARY KEY определяет столбец, как простой (не составной) первичный ключ таблицы. Простым первичным ключом может быть объявлен только один столбец таблицы.
-
Ограничения столбца с атрибутом PRIMARY KEY:
-
не может содержать NULL-значений;
-
не может содержать дубликаты значений. В связи с этим столбец не должен иметь
< значение по умолчанию >
(DEFAULT-значения) и константное< подставляемое значение >
, если допускается возможность добавления NULL-значения.
-
-
Значения отдельных столбцов составного первичного ключа могут дублироваться, но комбинация значений всех столбцов составного первичного ключа должна быть уникальной.
create or replace table t_pk (c_pk1 int, c_pk2 decimal, c_pk3 char(10), primary key (c_pk1, c_pk3)); insert into t_pk (c_pk1, c_pk2, c_pk3) values (10, 25.7,'aaa'), (20, 67.5,'bbb'), (10, 219.6, 'bbb'), (20, 66.8, 'aaa'); 10 25.7 aaa 20 67.5 bbb 10 219.6 bbb 20 66.8 aaa Ошибка - повторное значение ключа insert into t_pk (c_pk1, c_pk2, c_pk3) values (10, 25.7,'aaa'), Недопустимое значение ключа insert into t_pk (c_pk1, c_pk2, c_pk3) values (null, 25.7,'aaa'); insert into t_pk (c_pk1, c_pk2, c_pk3) values (40, 78.7, null);