Я наконец-то нашел что-то в документации 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 принял его, должны быть выполнены следующие требования:
- Вы должны использовать Access 2003 и более поздние версии.
- В меню «Инструменты> Параметры» на вкладке "Таблицы или запросы" необходимо указать, что вы хотите «Синтаксис, совместимый с SQL Server (ANSI 92)», по крайней мере, для текущей базы данных.
После этой небольшой настройки в Access 2003 все работает! Access больше не отображает это сообщение об ошибке, и теперь он позволяет использовать этот синтаксис для указания правил удаления и обновления для внешних ключей!
Когда одно из этих правил не указано, Access предполагает, что оно ограничено. Другими словами, если правило удаления или правило обновления не указано, Access ограничивает удаление или обновление соответственно.