Я должен создать несколько таблиц в Microsoft Access, используя предложения SQL, а некоторые таблицы имеют внешние ключи.

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

  1. Разрешен ли NULL или нет
  2. Удалить правило
  3. Обновить правило

Как я могу указать правила для внешних ключей в Microsoft Access, используя SQL?

1 ответ1

1

Я наконец-то нашел что-то в документации Access.

Предложение CONSTRAINT для определения ограничений FOREIGN KEY принимает следующий синтаксис:

CONSTRAINT FOREIGN KEY (ref1[, ref2[, ...]]) REFERENCES table
    ON UPDATE [CASCADE | SET NULL]
    ON DELETE [CASCADE | SET NULL]

Я предполагаю, что для того, чтобы указать, разрешен ли NULL для этого FOREIGN KEY, нужно добавить другое ограничение с

CONSTRAINT NOT NULL (ref)

или непосредственно указанием NOT NULL при определении этого поля в предложении CREATE TABLE.

Тем не менее, я получаю синтаксическую ошибку, когда я ввожу "ON UPDATE" и "ON DELETE", говоря, что они не приняты, и эта ошибка не появляется, когда я удаляю эти правила.


Отредактировано 2010-06-06:

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

  1. Вы должны использовать Access 2003 и более поздние версии.
  2. В меню «Инструменты> Параметры» на вкладке "Таблицы или запросы" необходимо указать, что вы хотите «Синтаксис, совместимый с SQL Server (ANSI 92)», по крайней мере, для текущей базы данных.

После этой небольшой настройки в Access 2003 все работает! Access больше не отображает это сообщение об ошибке, и теперь он позволяет использовать этот синтаксис для указания правил удаления и обновления для внешних ключей!

Когда одно из этих правил не указано, Access предполагает, что оно ограничено. Другими словами, если правило удаления или правило обновления не указано, Access ограничивает удаление или обновление соответственно.

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .