Access внешний ключ что это
Перейти к содержимому

Access внешний ключ что это

  • автор:

Определение связей между таблицами с помощью Access SQL

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

Первичный ключ — это поле (или поля), которое используется для уникальной идентификации каждой записи в таблице. Существует три требования к первичному ключу: он не может иметь значение NULL, он должен быть уникальным и может быть определен только один на таблицу. Первичный ключ можно определить либо путем создания индекса первичного ключа после создания таблицы, либо с помощью предложения CONSTRAINT в объявлении таблицы, как показано в примерах ниже в этом разделе. Ограничение ограничивает (или ограничивает) значения, введенные в поле.

Внешний ключ — это поле (или поля) в одной таблице, которое ссылается на первичный ключ в другой таблице. Данные в полях из обеих таблиц точно одинаковы, и таблица с записью первичного ключа (первичная таблица) должна иметь существующие записи, прежде чем таблица с записью внешнего ключа (внешняя таблица) будет содержать соответствующие или связанные записи. Как и первичные ключи, внешние ключи можно определить в объявлении таблицы с помощью предложения CONSTRAINT .

Существует три типа связей:

  • Один к одному Для каждой записи в первичной таблице существует только одна запись во внешней таблице.
  • Один ко многим Для каждой записи в первичной таблице есть одна или несколько связанных записей во внешней таблице.
  • Многие ко многим Для каждой записи в первичной таблице существует множество связанных записей во внешней таблице, а для каждой записи во внешней таблице — много связанных записей в первичной таблице.

Например, предположим, что вы хотите добавить таблицу счетов в базу данных выставления счетов. Каждый клиент в таблице «Клиенты» может иметь множество счетов в таблице счетов. Это классический сценарий «один ко многим». Вы можете взять первичный ключ из таблицы customers и определить его как внешний ключ в таблице счетов, тем самым установив правильную связь между таблицами.

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

В следующей инструкции предполагается, что таблица tblCustomers уже создана и имеет первичный ключ, определенный в поле CustomerID. Теперь инструкция создает таблицу tblInvoices, определяя ее первичный ключ в поле InvoiceID. Он также создает связь «один ко многим» между таблицами tblCustomers и tblInvoices путем определения другого поля CustomerID в таблице tblInvoices. Это поле определяется как внешний ключ, который ссылается на поле CustomerID в таблице customers. Обратите внимание, что имя каждого ограничения следует ключевому слову CONSTRAINT .

CREATE TABLE tblInvoices (InvoiceID INTEGER CONSTRAINT PK_InvoiceID PRIMARY KEY, CustomerID INTEGER NOT NULL CONSTRAINT FK_CustomerID REFERENCES tblCustomers (CustomerID), InvoiceDate DATETIME, Amount CURRENCY) 

Обратите внимание, что индекс первичного ключа (PK_InvoiceID) для таблицы счетов объявляется в инструкции CREATE TABLE . Чтобы повысить производительность первичного ключа, для него автоматически создается индекс, поэтому нет необходимости использовать отдельную инструкцию CREATE INDEX . Теперь создайте таблицу доставки, которая будет содержать адрес доставки каждого клиента. Предположим, что для каждой записи клиента будет только одна запись доставки, поэтому вы будете устанавливать связь «один к одному».

CREATE TABLE tblShipping (CustomerID INTEGER CONSTRAINT PK_CustomerID PRIMARY KEY REFERENCES tblCustomers (CustomerID), Address TEXT(50), City TEXT(50), State TEXT(2), Zip TEXT(10)) 

Обратите внимание, что поле CustomerID является первичным ключом для таблицы доставки и ссылкой внешнего ключа на таблицу customers.

Ограничения

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

Существует два типа ограничений: ограничение на уровне одного поля или на уровне поля и ограничение на уровне нескольких полей или таблиц. Оба типа ограничений можно использовать в инструкции CREATE TABLE или ALTER TABLE .

Ограничение на одно поле, также известное как ограничение на уровне столбца, объявляется с самим полем после объявления поля и типа данных. Используйте таблицу customers и создайте первичный ключ с одним полем в поле CustomerID. Чтобы добавить ограничение, используйте ключевое слово CONSTRAINT с именем поля.

ALTER TABLE tblCustomers ALTER COLUMN CustomerID INTEGER CONSTRAINT PK_tblCustomers PRIMARY KEY 

Обратите внимание, что задано имя ограничения. Вы можете использовать ярлык для объявления первичного ключа, который полностью пропускает предложение CONSTRAINT .

ALTER TABLE tblCustomers ALTER COLUMN CustomerID INTEGER PRIMARY KEY 

Однако использование метода сочетания клавиш приведет к тому, что Access случайным образом создаст имя для ограничения, что усложнит ссылку в коде. Рекомендуется всегда называть ограничения.

Чтобы удалить ограничение, используйте предложение DROP CONSTRAINT с инструкцией ALTER TABLE и укажите имя ограничения.

ALTER TABLE tblCustomers DROP CONSTRAINT PK_tblCustomers 

Ограничения также можно использовать для ограничения допустимых значений для поля. Значения можно ограничить значением NOT NULL или UNIQUE или определить проверочные ограничения, которые являются типом бизнес-правила, которое может применяться к полю. Предположим, что вы хотите ограничить (или ограничить) значения полей имени и фамилии, чтобы они были уникальными, а это означает, что сочетание имени и фамилии не должно быть одинаковым для любых двух записей в таблице. Так как это ограничение нескольких полей, оно объявляется на уровне таблицы, а не на уровне поля. Используйте предложение ADD CONSTRAINT и определите многополевой список.

ALTER TABLE tblCustomers ADD CONSTRAINT CustomerID UNIQUE ([Last Name], [First Name]) 

Проверочное ограничение — это мощная функция SQL, которая позволяет добавлять проверку данных в таблицу, создавая выражение, которое может ссылаться на одно поле или несколько полей в одной или нескольких таблицах. Предположим, что вы хотите убедиться, что суммы, указанные в записи счета, всегда больше 0,00 долл. США. Для этого используйте проверочные ограничения, объявив ключевое слово CHECK и выражение проверки в предложении ADD CONSTRAINT инструкции ALTER TABLE .

ALTER TABLE tblInvoices ADD CONSTRAINT CheckAmount CHECK (Amount > 0) 

Выражение, используемое для определения проверочного ограничения, также может ссылаться на несколько полей в одной таблице или на поля в других таблицах и может использовать любые операции, допустимые в Access SQL, такие как инструкции SELECT , математические операторы и агрегатные функции. Выражение, определяющее проверочные ограничения, может содержать не более 64 символов.

Предположим, что вы хотите проверить кредитный лимит каждого клиента, прежде чем он будет добавлен в таблицу клиентов. Используя инструкцию ALTER TABLE с предложениями ADD COLUMN и CONSTRAINT , создайте ограничение, которое будет искать значение в таблице CreditLimit для проверки кредитного лимита клиента. Используйте следующие инструкции SQL, чтобы создать таблицу tblCreditLimit, добавить поле CustomerLimit в таблицу tblCustomers, добавить проверочные ограничения в таблицу tblCustomers и протестировать проверочные ограничения.

CREATE TABLE tblCreditLimit ( Limit DOUBLE) INSERT INTO tblCreditLimit VALUES (100) ALTER TABLE tblCustomers ADD COLUMN CustomerLimit DOUBLE ALTER TABLE tblCustomers ADD CONSTRAINT LimitRule CHECK (CustomerLimit  

Обратите внимание, что при выполнении инструкции UPDATE TABLE появляется сообщение о том, что обновление не выполнено, так как оно нарушило проверочные ограничения. Если обновить поле CustomerLimit до значения, равного 100 или меньшего значения, обновление будет выполнено успешно.

Поддержка и обратная связь

Есть вопросы или отзывы, касающиеся Office VBA или этой статьи? Руководство по другим способам получения поддержки и отправки отзывов см. в статье Поддержка Office VBA и обратная связь.

Разница между первичным ключом и внешним ключом

Ключевые различия между первичным ключом и внешним ключом

  • Ограничение первичного ключа — это столбец, который уникально идентифицирует каждую строку в таблице системы управления реляционной базой данных, а внешний ключ — это столбец, который создает связь между двумя таблицами.
  • Первичный ключ никогда не принимает нулевые значения, тогда как внешний ключ может принимать несколько нулевых значений.
  • В таблице может быть только один первичный ключ, а в таблице может быть несколько внешних ключей.
  • Значение первичного ключа не может быть удалено из родительской таблицы, тогда как значение значения внешнего ключа может быть удалено из дочерней таблицы.
  • Никакие две строки не могут иметь одинаковые значения первичного ключа; с другой стороны, внешний ключ может содержать повторяющиеся значения.
  • Нет ограничений на вставку значений в столбец таблицы при вставке любого значения в таблицу внешнего ключа; убедитесь, что значение присутствует в столбце первичного ключа.

Первичный ключ против внешнего ключа

Что такое ключи?

Ключи — это атрибут, который помогает вам идентифицировать строку (кортеж) в отношении (таблице). Они позволяют найти связь между двумя таблицами. Ключи помогают однозначно идентифицировать строку в таблице по комбинации одного или нескольких столбцов этой таблицы. Ключ базы данных также полезен для поиска уникальной записи или строки в таблице.

Что такое первичный ключ?

Ограничение первичного ключа — это столбец или группа столбцов, которые однозначно идентифицируют каждую строку в таблице системы управления реляционной базой данных. Оно не может быть дубликатом, то есть одно и то же значение не должно появляться в таблице более одного раза.

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

Что такое внешний ключ?

Внешний ключ — это столбец, который создает связь между двумя таблицами. Цель внешнего ключа — поддерживать целостность данных и обеспечивать навигацию между двумя разными экземплярами объекта. Он действует как перекрестная ссылка между двумя таблицами, поскольку ссылается на первичный ключ другой таблицы. Каждое отношение в базе данных должно поддерживаться внешним ключом.

Разница между первичным ключом и внешним ключом

Вот важное различие между первичным ключом и внешним ключом:

Основной ключ Внешний ключ
Ограничение первичного ключа — это столбец или группа столбцов, которые однозначно идентифицируют каждую строку таблицы. система управления реляционными базами данных. Внешний ключ — это столбец, который создает связь между двумя таблицами.
Это поможет вам однозначно идентифицировать запись в таблице. Это поле таблицы, которое является первичным ключом другой таблицы.
Первичный ключ никогда не принимает нулевые значения. Внешний ключ может принимать несколько нулевых значений.
Первичным ключом является кластерный индекс, а данные в таблице СУБД физически организованы в последовательности кластерного индекса. Внешний ключ не может автоматически создавать индекс, кластерный или некластеризованный.
В таблице может быть один первичный ключ. В таблице может быть несколько внешних ключей.
Значение первичного ключа не может быть удалено из родительской таблицы. Значение значения внешнего ключа можно удалить из дочерней таблицы.
Вы можете неявно определить первичный ключ во временных таблицах. Вы не можете определить внешние ключи в локальных или глобальных временных таблицах.
Первичный ключ — это кластерный индекс. По умолчанию это не кластеризованный индекс.
Никакие две строки не могут иметь одинаковые значения первичного ключа. Внешний ключ может содержать повторяющиеся значения.
Нет ограничений на вставку значений в столбец таблицы. При вставке любого значения в таблицу внешнего ключа убедитесь, что это значение присутствует в столбце первичного ключа.

Что такое связь с базой данных?

Отношения с базой данных — это ассоциации между одной или несколькими таблицами, созданные с помощью операторов соединения. Он используется для эффективного извлечения данных из базы данных. В основном существует три типа отношений: 1) «Один-к-одному», 2) «Один-ко-многим», 3) «Многие-ко-многим».

Зачем использовать первичный ключ?

Вот минусы/преимущества использования первичного ключа:

  • Основная цель первичного ключа — идентифицировать каждую запись в таблице базы данных.
  • Вы можете использовать первичный ключ, если не разрешаете кому-либо вводить нулевые значения.
  • Если вы удалите или обновите записи, будет предпринято указанное вами действие для обеспечения целостности данных.
  • Выполните операцию ограничения, чтобы отклонить операцию удаления или обновления родительской таблицы.
  • Данные организуются в последовательность кластеризованных индексов всякий раз, когда вы физически организуете таблицу СУБД.

Зачем использовать внешний ключ?

Вот важные причины использования внешнего ключа:

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

Пример первичного ключа

Синтаксис:

Ниже приведен синтаксис первичного ключа:

CREATE TABLE ( Column1 datatype, Column2 datatype, PRIMARY KEY (Column-Name) . );
  • Table_Name — это имя таблицы, которую вам нужно создать.
  • Column_Name — имя столбца, имеющего первичный ключ.

Это критически важно для анализа и выбора наиболее эффективных ключевых слов для улучшения рейтинга вашего сайта.

StudID Ролл Нет Имя Фамилия Эл. адрес
1 11 Том Цена abc@gmail.com
2 12 Ник Райт xyz@gmail.com
3 13 Dana Натан mno@yahoo.com

В приведенном выше примере мы создали таблицу учащихся с такими столбцами, как StudID, Roll No, First Name, Last Name и E.mail. StudID выбран в качестве первичного ключа, поскольку он может однозначно идентифицировать другие строки в таблице.

Пример внешнего ключа

Синтаксис:

Ниже приведен синтаксис внешнего ключа:

CREATE TABLE ( column1 datatype, column2 datatype, constraint (name of constraint) FOREIGN KEY [column1, column2. ] REFERENCES [primary key table name] (List of primary key table column) . );
  • Параметр Имя таблицы указывает имя таблицы, которую вы собираетесь создать.
  • Параметры столбец1, столбец2… обозначают столбцы, которые необходимо добавить в таблицу.
  • Ограничение обозначает имя создаваемого вами ограничения.
  • Ссылки указывают на таблицу с первичным ключом.

Это критически важно для анализа и выбора наиболее эффективных ключевых слов для улучшения рейтинга вашего сайта.

Код отдела Название отдела
001 Наука
002 Английский
005 Компьютер
Идентификатор учителя Fимя Имя
B002 Давид Сигнализатор
B017 Сара Джозеф
B009 Майк Брантон

В приведенном выше примере у нас есть две таблицы: учитель и факультет школы. Однако нет возможности увидеть, какой поиск в каком отделе работает.

В этой таблице, добавив внешний ключ в Deptcode к имени учителя, мы можем создать связь между двумя таблицами.

Идентификатор учителя Код отдела Fимя Имя
B002 002 Давид Сигнализатор
B017 002 Сара Джозеф
B009 001 Майк Брантон

Эта концепция также известна как ссылочная целостность.

  • Хеширование в СУБД: методы статического и динамического хеширования
  • Разница между первичным ключом и уникальным ключом
  • Разница между DDL и DML в СУБД
  • Файловая система против СУБД – разница между ними
  • Строка и столбец – разница между ними
  • Учебное пособие по СУБД в формате PDF: Системы управления базами данных
  • 10 ЛУЧШИХ программ для управления базами данных (список СУБД 2024 г.)
  • 60+ вопросов и ответов на собеседовании по СУБД

Добавление и изменение первичного ключа таблицы в Access

Первичный ключ — это поле или набор полей со значениями, которые являются уникальными для всей таблицы. Значения ключа могут использоваться для обозначения всех записей, при этом каждая запись имеет отдельное значение ключа. Каждая таблица может содержать только один первичный ключ. Access может автоматически создавать поле первичного ключа при создании таблицы. Вы также можете самостоятельно указать поля, которые нужно использовать в качестве первичного ключа. В этой статье объясняется, как и зачем использовать первичные ключи.

Чтобы задать первичный ключ таблицы, откройте таблицу в режиме конструктора. Выберите нужное поле (или поля), а затем на ленте щелкните Ключевое поле.

Примечание: Эта статья относится только к классическим базам данных Access. В веб-приложениях Access и веб-базах данных первичный ключ для новых таблиц назначается автоматически. Несмотря на то что автоматические первичные ключи можно менять, делать это не рекомендуется.

В этой статье

  • Общие сведения о первичных ключах в Access
  • Определение первичного ключа в Access с помощью имеющихся полей
  • Удаление первичного ключа
  • Изменение первичного ключа в Access
  • Дополнительные сведения

Общие сведения о первичных ключах в Access

Используя поля первичных ключей, Access быстро связывает данные из нескольких таблиц и объединяет их понятным образом. Вы можете добавить поля первичных ключей в другие таблицы, чтобы ссылаться на таблицу, которая является источником первичного ключа. В других таблицах поля называются внешними ключами. Например, поле "ИД клиента" в таблице "Клиенты" также может отображаться в таблице "Заказы". В таблице "Клиенты" оно является первичным ключом. В таблице "Заказы" оно называется внешним ключом. Проще говоря, внешний ключ — это первичный ключ другой таблицы. Дополнительные сведения см. в статье Основные сведения о создании баз данных.

1. Первичный ключ

При переносе существующих данных в базу данных в них уже может существовать поле, которое можно использовать как первичный ключ. Часто в роли первичного ключа таблицы выступает уникальный идентификационный номер, например порядковый или инвентарный номер или код. Например, в таблице "Клиенты" для каждого клиента может быть указан уникальный код клиента. Поле кода клиента является первичным ключом.

Для первичного ключа автоматически создается индекс, ускоряющий выполнение запросов и операций. Кроме того, приложение Access проверяет наличие и уникальность значений в поле первичного ключа.

При создании таблицы в режиме таблицы Access автоматически создает первичный ключ с именем "Код" и типом данных "Счетчик".

Создание приемлемого первичного ключа

Чтобы правильно выбрать первичный ключ, следует учитывать несколько характеристик.

  • Ключ должен однозначно определять каждую строку.
  • В нем не должно быть пустых или отсутствующих значений — он всегда содержит значение.
  • Ключ крайне редко изменяется (в идеале — никогда).

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

Первичный ключ с типом данных

Поле с типом данных "Счетчик" является хорошим первичным ключом.

Примеры неудачных первичных ключей

Любое поле, не имеющее одной или нескольких характеристик подходящего первичного ключа, не следует выбирать в качестве первичного ключа. Ниже представлено несколько примеров полей, которые не годятся на роль первичного ключа в таблице "Контакты", и пояснения, почему их не следует использовать.

Неподходящий первичный ключ

Может быть не уникальным и может изменяться

Адрес электронной почты

Почтовый индекс может соответствовать нескольким контактным данным

Сочетание фактов и цифр

Факты могут изменяться, тем самым усложняя работу. Если фактическая часть повторяется в виде отдельного поля, это может привести к путанице. Например, не следует соединять название города и порядковый номер (например, САМАРА0579), если название города уже указано в отдельном поле.

Номера социального страхования или ИНН

  • Личные сведения запрещено указывать в государственных учреждениях и некоторых организациях.
  • Некоторые люди не имеют ИНН
  • На одного человека может быть зарегистрировано несколько ИНН на протяжении жизни

Составные ключи: использование сочетания нескольких полей в качестве первичного ключа

В некоторых случаях в качестве первичного ключа таблицы нужно использовать несколько полей. Например, для таблицы сведений о заказах, в которой хранятся элементы строк для заказов, в первичном ключе можно использовать два столбца: "Номер заказа" и "Артикул". Если ключ состоит из нескольких полей, он также называется составным ключом.

Определение первичного ключа в Access с помощью имеющихся полей

Для правильной работы первичного ключа поле должно однозначно определять каждую строку, не содержать пустых и отсутствующих значений и редко изменяться (в идеале — не изменяться никогда). Чтобы задать первичный ключ, выполните указанные ниже действия.

  1. Откройте базу данных, которую нужно изменить.
  2. В области навигации щелкните правой кнопкой мыши таблицу, в которой нужно определить первичный ключ, и в контекстном меню выберите пункт Конструктор.

Совет: Если область навигации не отображается, нажмите клавишу F11.

Удаление первичного ключа в Access

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

Удаление первичного ключа не приводит к удалению полей таблицы, но при этом удаляется индекс, созданный для первичного ключа.

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

Изображение ленты Access

Чтобы удалить связь между таблицами, сделайте следующее:

  1. Закройте связанные таблицы, если они открыты. Связь между открытыми таблицами удалить невозможно.
  2. На вкладке Работа с базами данных в группе Отношения нажмите кнопку Схема данных.
  3. Выберите Добавить таблицы (Показать таблицу в Access 2013).
  4. Щелкните линию связи между таблицами, которую необходимо удалить (выделенная линия становится жирной), а затем нажмите клавишу DEL.
  5. На вкладке Конструктор связей в группе Связи нажмите кнопку Закрыть.
  • После удаления связей в области навигации щелкните правой кнопкой мыши таблицу, из которой нужно удалить первичный ключ, и в контекстном меню выберите команду Конструктор.

    Совет: Если область навигации не отображается, нажмите клавишу F11.

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

    Изменение первичного ключа в Access

    Чтобы изменить первичный ключ таблицы, выполните указанные ниже действия.

    1. Удалите существующий первичный ключ, следуя инструкциям в разделе Удаление первичного ключа.
    2. Определите первичный ключ в соответствии с инструкциями в разделе Определение первичного ключа.

    Дополнительные сведения

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

    • Основные сведения о базах данных
    • Структура базы данных Access
    • Создание базы данных Access
    • Создание таблиц в базе данных

    SQL FOREIGN KEY

    FOREIGN KEY - это ключ, используемый для соединения двух таблиц вместе.
    FOREIGN KEY - это поле (или набор полей) в одной таблице, которое ссылается на первичный ключ в другой таблице.

    Таблица, содержащая внешний ключ, называется дочерней таблицей, а таблица, содержащая ключ кандидат, называется ссылочной или родительской таблицей.

    Посмотрите на следующие две таблицы:

    PersonID LastName FirstName Age
    1 Hansen Ola 30
    2 Svendson Tove 23
    3 Pettersen Kari 20
    OrderID OrderNumber PersonID
    1 77895 3
    2 44678 3
    3 22456 2
    4 24562 1

    Обратите внимание, что столбец "PersonID" в таблице "Orders" указывает на столбец "PersonID" в таблице "Persons".

    Столбец "PersonID" в таблице "Persons" является первичным ключом в таблице "Persons".

    Столбец "PersonID" в таблице "Orders" является внешним ключом в таблице "Orders".

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

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

    Ограничение FOREIGN KEY в CREATE TABLE

    Следующий SQL создает внешний ключ в столбце "PersonID" при создании таблицы "Orders":

    CREATE TABLE Orders (
    OrderID int NOT NULL,
    OrderNumber int NOT NULL,
    PersonID int,
    PRIMARY KEY (OrderID),
    FOREIGN KEY (PersonID) REFERENCES Persons(PersonID)
    );

    SQL Server / Oracle / MS Access:

    CREATE TABLE Orders (
    OrderID int NOT NULL PRIMARY KEY,
    OrderNumber int NOT NULL,
    PersonID int FOREIGN KEY REFERENCES Persons(PersonID)
    );

    Чтобы разрешить именование ограничения внешнего ключа и определить ограничение внешнего ключа для нескольких столбцов, используйте следующий синтаксис SQL:

    MySQL / SQL Server / Oracle / MS Access:

    CREATE TABLE Orders (
    OrderID int NOT NULL,
    OrderNumber int NOT NULL,
    PersonID int,
    PRIMARY KEY (OrderID),
    CONSTRAINT FK_PersonOrder FOREIGN KEY (PersonID)
    REFERENCES Persons(PersonID)
    );

    Ограничение FOREIGN KEY в ALTER TABLE

    Чтобы создать ограничение внешнего ключа для столбца "PersonID", когда таблица "Orders" уже создана, используйте следующий SQL:

    MySQL / SQL Server / Oracle / MS Access:

    ALTER TABLE Orders
    ADD FOREIGN KEY (PersonID) REFERENCES Persons(PersonID);

    Чтобы разрешить именование ограничения внешнего ключа и определить ограничение внешнего ключа для нескольких столбцов, используйте следующий синтаксис SQL:

    MySQL / SQL Server / Oracle / MS Access:

    ALTER TABLE Orders
    ADD CONSTRAINT FK_PersonOrder
    FOREIGN KEY (PersonID) REFERENCES Persons(PersonID);

    Ограничение FOREIGN KEY с DROP

    Чтобы удалить ограничение внешнего ключа, используйте следующий SQL:

    ALTER TABLE Orders
    DROP FOREIGN KEY FK_PersonOrder;

    SQL Server / Oracle / MS Access:

  • Добавить комментарий

    Ваш адрес email не будет опубликован. Обязательные поля помечены *