#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 о закрытых скобках тоже верна.