Таким образом, если определяется простой ключ (первичный или внешний), то его можно задать как в ограничении столбца, так и в ограничении таблицы -результат будет одинаков. Однако если ключ составной, то его можно определить только в ограничении на таблицу.
Например, чтобы при создании таблицы NachislSumma определить составной первичный ключ, состоящий из полей NachislFactCD и NachislYear, и внешние ключи AccountCD и GazServiceCD, необходимо применить следующий запрос: CREATE TABLE NachislSumma (NachislFactCD INTEGER NOT NULL, NachislSum NUMERIC(15,2), NachislYear SMALLINT NOT NULL, NachislMonth SMALLINT, AccountCD VARCHAR(6) NOT NULL, GazServiceCD INTEGER NOT NULL, PRIMARY KEY (NachislFactCD, NachislYear), FOREIGN KEY (AccountCd) REFERENCES Abonent(AccountCD), FOREIGN KEY (GazServiceCD) REFERENCES Services(GazServiceCD));. При этом в качестве действия на изменение первичных ключей таблиц Abonent и Services будет определено действие NO ACTION, используемое по умолчанию.
При использовании предложения UNIQUEнакладывается условие уникальности на значения столбцов таблицы, перечисленных в скобках через запятую. В столбцах с уникальными ограничениями можно использовать NULL значения. Следует учесть, что если в столбцы, на значения которых наложено условие уникальности, пытаться ввести только NULL значения, то они не будут считаться одинаковыми и команда будет выполнена успешно.
Создадим, например, таблицу Phone_Sprav с четырьмя столбцами: столбец number типа INTEGER, столбец Fio типа VARCHAR(25), столбец Home_Phone типа VARCHAR(6) и столбец Mobil_Phone типа VARCHAR(11). При этом столбец numberопределим в качестве первичного ключа, а в качестве ограничения на таблицу определим уникальность столбцов Home_Phone и Mobil_Phone. Запрос CREATE TABLE для создания таблицы Phone_Sprav примет следующий вид:
предыдущаяследующая