Определить первичный ключ таблицы

При задании ограничения таблицы можно определить первичный ключ как простой, так и составной. Если первичный ключ не является составным, то его можно определить при задании ограничения столбца что было рассмотрено выше , но составной первичный ключ можно определить только с помощью ограничения таблицы. Для этого поля таблицы, являющиеся составным первичным ключом, перечисляются в скобках через запятую в предложении.

Первичный ключ таблицы базы данных

Аналогично при задании ограничения таблицы можно определить как простой, так и составной внешний ключ, причем если простой ключ уже был определен в ограничении столбца, то определять его снова не требуется. Составной внешний ключ можно определить только с помощью ограничения таблицы, и для этого используется предложение FOREIGN KEY со списком столбцов и предложением REFERENCES c именами содержащих их таблиц, на которые ссылается данный внешний ключ.

Использование параметров NO ACTION, CASCADE, SET DEFAULT и SET NULL в предложениях ON DELETE и ON UPDATE аналогично использованию их при определении ограничения столбца было рассмотрено выше. Таким образом, если определяется простой ключ первичный или внешний , то его можно задать как в ограничении столбца, так и в ограничении таблицы -результат будет одинаков.

Однако если ключ составной, то его можно определить только в ограничении на таблицу. Например, чтобы при создании таблицы NachislSumma определить составной первичный ключ, состоящий из полей NachislFactCD и NachislYear, и внешние ключи AccountCD и GazServiceCD, необходимо применить следующий запрос:. 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 значения. Следует учесть, что если в столбцы, на значения которых наложено. Создадим, например, таблицу PhoneSprav с четырьмя столбцами: При этом столбец number определим в качестве первичного ключа, а в качестве ограничения на таблицу определим уникальность столбцов HomePhone и MobilPhone.

Запрос CREATE TABLE для создания таблицы PhoneSprav примет следующий вид:. Если попытаться добавить в таблицу строки позже будет рассмотрено, как это можно сделать , в которых значения полей number и Fio различны, а поля HomePhone и MobilPhone равны NULL, то вставка этих данных пройдет успешно, так как считается, что каждое NULL, NULL в уникальных столбцах HomePhone, MobilPhone отличается от любого другого NULL, NULL.

Однако попытка вставить строки с одинаковыми значениями в одном из уникальных столбцов HomePhone или MobilPhone и с NULL значениями в другом не удастся. Таким образом, если хотя бы для одного столбца из списка, на который наложено условие уникальности, повторяется значение, отличное от NULL, то запрос не будет выполнен.

Это полезно в тех случаях, когда условие необходимо задать на значениях нескольких столбцов. Предположим, что поступившая ремонтная заявка должна выполняться не позднее, чем через неделю после поступления то есть дата выполнения должна быть в диапазоне от дня поступления до даты на 7 дней позднее.

Запрос на создание таблицы Request с учетом этого ограничения можно представить в следующем виде:. Следует обратить внимание, что проверяются значения разных столбцов одной и той же строки - нельзя проверить значения более чем в одной строке. Также нельзя использовать ограничение CHECK, например, для того, чтобы указать зависимость даты выполнения одной ремонтной заявки от даты поступления остальных. Для удаления существующей таблицы используется запрос DROP TABLE, который имеет следующий формат:.

Созданную запросом CREATE TABLE базовую таблицу можно изменить запросом ALTER TABLE. Он поддерживает следующие изменения:. Почему лучше программировать в IDE, чем в блокноте? Что такое объектно-ориентированное программирование? ООП, UML и Java Обойти защиту в Oracle Улучшить стиль программирования Почему стоит стать программистом? Проектирование программного проекта Почему 12 языков программирования потрясли весь мир?

Что такое диаграмма вариантов использования UML? Каковы алгоритмы сжатия данных? Что такое массивы в программировании? Гипертекстовые технологии Как выбрать язык программирования для разработки сайта?

См. также