ошибка синтаксиса создания таблицы в Microsoft Access?

#sql #ms-access

#sql #ms-access

Вопрос:

Вот мой код, я пытаюсь создать несколько таблиц:

 Create Table Order_t
(
Id AutoIncrement Not Null,
OrderDate DateTime Not Null,
CustId Int Not Null,
Primary Key(Id),
Foreign Key(CustId) References Customer_t(Id)
(;
Create Table PersonRole_t
(
PersonRoleID Autoincrement Not Null,
Person_ID int Not Null,
Primary Key(PersonRoleID, Person_ID),
Foreign Key(Person_ID) References Person_T(Person_ID)
(;
Create Table Product_t
(
Id Text(10) Not Null,
Name Text(30) Not Null,
Description Text(30),
Finish Text(30),
UnitPrice Currency Not Null,
Primary Key(Id)
) ;
  

Всякий раз, когда я запускаю его в Microsoft Access, я получаю сообщение об ошибке в инструкции CREATE TABLE (оно выделяет определение таблицы PersonRole_T). Не уверен, что делать, довольно новичок в SQL.

Ответ №1:

Используйте CLOSE скобки в конце CREATE инструкции Table вместо круглых OPEN скобок

 Create Table Order_t
(
Id AutoIncrement Not Null,
OrderDate DateTime Not Null,
CustId Int Not Null,
Primary Key(Id),
Foreign Key(CustId) References Customer_t(Id)
); -- Not (;

Create Table PersonRole_t
(
PersonRoleID Autoincrement Not Null,
Person_ID int Not Null,
Primary Key(PersonRoleID, Person_ID),
Foreign Key(Person_ID) References Person_T(Person_ID)
); -- Not (; 
  

Комментарии:

1. Просто чтобы указать очевидное для OP, синтаксис Access SQL не поддерживает комментарии, поэтому -- Not (; часть должна быть удалена при выполнении.

Ответ №2:

Таблица Person_T с ключом of Person_ID должна существовать до References Person_T(Person_ID) того, как оператор сможет выполняться. Основываясь на вашем соглашении об именах, я бы предположил, что утверждение должно быть References Person_T(Id) .

Рассмотрите возможность изменения вашего соглашения об именовании, чтобы элемент данных не менял свое имя в зависимости от его местоположения, связанного с таблицами / представлениями. Также подумайте, стоит ли беспокоиться о _t суффиксе.

Точка зрения @Prdp о закрытых скобках тоже верна.