Доступ> SQL> Создать таблицу. Ограничения> Внешний ключ - PullRequest
1 голос
/ 08 июня 2011

Приведенный ниже оператор используется для создания таблицы CAMPUS.Я получаю сообщение об ошибке:

«Синтаксическая ошибка в предложении CONSTRAINT»
«ОБНОВЛЕНИЕ» подсвечивается, обозначая источник ошибки.

При удалении «ON UPDATE CASCADE»В УДАЛЕНИИ НЕТ ДЕЙСТВИЙ "Я могу создать таблицу без проблем.

Каков правильный синтаксис или процедура?(«Справка» MS Access не помогла)

Код SQL:

CREATE TABLE CAMPUS(                
    CampusID    Counter(1,5)    NOT NULL,    
    UnivID    Long    NOT NULL,    
    CampusName    Text(50)    NOT NULL,    
    Address    Text(50)    NULL,    
    Zip    Number    NULL,    
    Phone    Number    NULL,               
    CONSTRAINT    CampusPK    PRIMARY KEY    (CampusID,UnivID),    
    CONSTRAINT    CampusFK    FOREIGN KEY    (UnivID)
    REFERENCES UNIVERSITY(UnivID)
    ON UPDATE CASCADE 
    ON DELETE NO ACTION
    CONSTRAINT    CampusAK1    UNIQUE    (CampusName)    
    );

Ответы [ 2 ]

1 голос
/ 15 июня 2011

Access (ACE, Jet, что угодно) поддерживал ссылочные действия в SQL DLL начиная с Jet 4.0 (Access2000). Однако они доступны только в ANSI-92 Query Mode .

Начиная с Access2003, пользовательский интерфейс Access может быть переведен в режим запросов ANSI-92, что позволяет выполнять более новый, более богатый DDL SQL из представления SQL запроса. Обратите внимание, что ADO (OLE DB) всегда использует режим запросов ANSI-92, а DAO использует «традиционный» режим запросов ANSI-89 (однако объектная модель IIRC DAO была усовершенствована и теперь включает все ссылочные действия, включая действие после 89 SET NULL).

Поэтому я полагаю, что вы получаете синтаксическую ошибку, поскольку вы пытаетесь выполнить SQL-запрос SQL-кода ANSI-92 в режиме запроса ANSI-89.

0 голосов
/ 08 июня 2011

Прошло уже более 10 лет с тех пор, как я в последний раз использовал MS Access, но, похоже, вы можете написать CASCADE или SET NULL после ON UPDATE и ON DELETE в ссылочном ограничении.

Так что в основном вы должны пропустить эту часть

ON DELETE NO ACTION

Ссылка http://www.sqlexamples.info/SQL/bsc_sqlddl1.htm

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