Привет всем коллегам !
Возник такой вопрос. Создал .mdb файл и пытаюсь выполнить такой запрос :
CREATE TABLE Заказы
(
КодЗаказа INTEGER PRIMARY KEY,
ИндексКлиента INTEGER,
ПримечанияЗаказа TEXT,
CONSTRAINT ВнКлЗаказыИндексКлиента FOREIGN KEY (ИндексКлиента) REFERENCES Клиенты ON UPDATE CASCADE ON DELETE CASCADE
);
В выделенном месте Access матерится и ругается(Syntax error in CONSTRAINT clause).Таблица "Клиенты" уже создана.
Пример переписан из справки по MS Access.
Так вот сижу я и думаю : или я где-то чего-то упустил, или сам движок БД таких конструкций не должен понимать?
Версия: MS Access 2003(build 11.5614.5606)
Заранее благодарю за любые предложения.
Здравствуйте, Kapone, Вы писали:
K>Привет всем коллегам !
K>Возник такой вопрос. Создал .mdb файл и пытаюсь выполнить такой запрос :
K>K>CREATE TABLE Заказы
K>(
K> КодЗаказа INTEGER PRIMARY KEY,
K> ИндексКлиента INTEGER,
K> ПримечанияЗаказа TEXT,
K> CONSTRAINT ВнКлЗаказыИндексКлиента FOREIGN KEY (ИндексКлиента) REFERENCES Клиенты ON UPDATE CASCADE ON DELETE CASCADE
K>);
K>
K>В выделенном месте Access матерится и ругается(Syntax error in CONSTRAINT clause).Таблица "Клиенты" уже создана.
K>Пример переписан из справки по MS Access.
K>Так вот сижу я и думаю : или я где-то чего-то упустил, или сам движок БД таких конструкций не должен понимать?
K>Версия: MS Access 2003(build 11.5614.5606)
K>Заранее благодарю за любые предложения.
CREATE TABLE Заказы
(
КодЗаказа INTEGER PRIMARY KEY,
ИндексКлиента INTEGER,
ПримечанияЗаказа TEXT,
CONSTRAINT ВнКлЗаказыИндексКлиента FOREIGN KEY (ИндексКлиента_fkey) REFERENCES Клиенты (ИндексКлиентаВТаблицеКлиены) ON UPDATE CASCADE ON DELETE CASCADE
)
Здравствуйте, ABK, Вы писали:
Извиняюсь за ...., вот так, вроде, правильно:
ABK>ABK>CREATE TABLE Заказы
ABK>(
ABK> КодЗаказа INTEGER PRIMARY KEY,
ABK> ИндексКлиента INTEGER,
ABK> ПримечанияЗаказа TEXT,
ABK> CONSTRAINT ВнКлЗаказыИндексКлиента FOREIGN KEY (ИндексКлиента) REFERENCES Клиенты (ИндексКлиентаВТаблицеКлиены) ON UPDATE CASCADE ON DELETE CASCADE
ABK>)
Спасибо за совет, но вопрос уже разрешился.
Просто я пытался выполнить DDL запрос во встроенном редакторе запросов Accessa.
Потом я посидел и подумал,а что если он ориентирован на выполнение обычных комманд, а не DDL ??
После этого вспомнил про утилитку BatchAccess, скачал её и прекрасно выполнил мой первоначалный код.
Еще раз спасибо за отзывчивость.
P.S.:
При создании связи с другой таблицей совсем не обязательно указывать ИндексКлиентаВТаблицеКлиенты.
По умолчанию берётся ключевое поле.
просто считается хорошим тоном это поле указывать явно. Вот так.