Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2002.10.17;
Скачать: CL | DM;

Вниз

Синтаксическая ошибка в SQL.   Найти похожие ветки 

 
koks ©   (2002-09-24 11:21) [0]

Уважаемые мастера, все делаю как в help-е по SQL, а вылетает синтаксическая ошибка.
Итак, создаю две таблицы: Factories и Tovar. Первая - справочник предпариятий. Вторая - Список товаров, в которой одно из полей указывает на предприятие.

CREATE TABLE "FACTORIES"
(
"ID" INTEGER NOT NULL PRIMARY KEY,
"FACTORY" VARCHAR(20) CHARACTER SET WIN1251
);

CREATE TABLE "TOVAR"
(
"ID" INTEGER NOT NULL PRIMARY KEY
"FACTORY_ID" INTEGER NOT NULL FOREIGN KEY REFERENCES Factories(ID)
);
Почему-то ругается на слово FOREIGN...

Не пойму...
Заранее благодарности..


 
3JIA9I CyKA ©   (2002-09-24 11:27) [1]

Ку?

CREATE TABLE "FACTORIES" (
"ID" INTEGER NOT NULL,
"FACTORY" VARCHAR(20) CHARACTER SET WIN1251,
CONSTRAINT PK_FACTORIES PRIMARY KEY (ID)
);

CREATE TABLE "TOVAR" (
"ID" INTEGER NOT NULL,
"FACTORY_ID" INTEGER NOT NULL,
CONSTRAINT PK_TOVAR PRIMARY KEY (ID),
CONSTRAINT FK_TOVAR_FACTORIES FOREIGN KEY (FACTORY_ID) REFERENCES FACTORIES (ID)
);


 
koks ©   (2002-09-24 12:34) [2]

Выдержки из Help-а по SQL:

In the next example, the F2 column in table T2 is a foreign key that references table T1 through T1"s primary key P1. When a row in T1 changes, that change propagates to all affected rows in table T2. When a row in T1 is deleted, all affected rows in the F2 column of table T2 are set to NULL.

CREATE TABLE T1 (P1 INTEGER NOT NULL PRIMARY KEY);

CREATE TABLE T2 (F2 INTEGER FOREIGN KEY REFERENCES T1.P1
ON UPDATE CASCADE
ON DELETE SET NULL);

Здесь нет никаких constraint. Поясните, на теоретическом уровне...

P.S. у меня там еще будет ON UPDATE CASCADE ON DELETE SET NULL


 
kaif ©   (2002-09-24 13:17) [3]

Ты просто забыл запятую поставить между определениями полей второй таблицы.
:))


 
Johnmen ©   (2002-09-24 13:26) [4]

>koks © (24.09.02 12:34)

В этом случае constraint создается неявно...


 
3JIA9I CyKA ©   (2002-09-24 13:35) [5]

Что значит неявно?! Foreign key больше не constraint?!
Я ещё допускаю, что неявно создаются индексы, но чтобы так!

Johnmen, доброе утро!!

С уважением, 3C.


 
kaif ©   (2002-09-24 13:41) [6]

2 3JIA9I CyKA © (24.09.02 13:35)
Если constraints не названы явно, то они все равно создаются, но с внутренними именами.


 
Johnmen ©   (2002-09-24 13:46) [7]

>3JIA9I CyKA © (24.09.02 13:35)

Добрый день !

Я что й то не уловил твоих намеков....:))

С уважением, JM.


 
koks ©   (2002-09-24 14:15) [8]

Пацаны, экскьюз меня, но я так и не понял, почему у меня синтаксическоя ошибка (-104) в символе, где начинается FOREIGN
(в свете приведенного из Help примера...) А запятую я пропуститл, когда копировал в сообщение. А так она у меня стоит.


 
3JIA9I CyKA ©   (2002-09-24 14:48) [9]

2kaif
Не надо меня лечить - я здоров:

constraint создается неявно...
Johnmen © (24.09.02 13:26)
Если constraints не названы явно

Вроде бы речь о разных вещах. Или нет?


 
Johnmen ©   (2002-09-24 15:00) [10]

>3JIA9I CyKA © (24.09.02 14:48)

Занимаемся буквоедством....? Не стоит, право... :-)))


 
3JIA9I CyKA ©   (2002-09-24 15:09) [11]

2Johnmen © (24.09.02 15:00)
Не знаю, что такое буквоедство.
Не в курсе, укого и что не стоит.
Не имею не малейшего представления о неявном создании constraint-ов.
Меня беспокоит только последнее.
Чем заниматься моим воспитанием, лучше перестаньте мне "тыкать" и уточните, что Вы имели ввиду.
>>Johnmen © (24.09.02 13:26)


 
Johnmen ©   (2002-09-24 15:43) [12]

>3JIA9I CyKA ©

К сожалению, с теми, кто мне ВЫкает, я не предрасположен к общению...


 
koks ©   (2002-09-24 15:49) [13]

Ребята, право же.... а то тут ща модераторы подтянутся.

привожу полный текст

CREATE TABLE "FACTORIES"
(
"ID" INTEGER NOT NULL,
"FACTORY" VARCHAR(20) CHARACTER SET WIN1251,
PRIMARY KEY ("ID")
);

CREATE TABLE "TOVAR"
(
"ID" INTEGER NOT NULL,
"FACTORY_ID" INTEGER NOT NULL FOREIGN KEY REFERENCES FACTORIES(ID),
"LOT" INTEGER NOT NULL,
"TYPE_ID" INTEGER NOT NULL,
"RNDFNC_ID" INTEGER NOT NULL,
"SIZECAT_ID" INTEGER NOT NULL,
"SIZEGROUP_ID" INTEGER NOT NULL,
"MAKE_ID" INTEGER NOT NULL,
"CUT_ID" INTEGER NOT NULL,
"COLOR_ID" INTEGER NOT NULL,
"CLARITY_ID" INTEGER NOT NULL,
"STONES" INTEGER NOT NULL,
"WEIGHT" FLOAT NOT NULL,
"PRICEPERCARAT" FLOAT NOT NULL,
"PRICE" FLOAT NOT NULL,
"CONTRACT" INTEGER NOT NULL,
"BOX" INTEGER NOT NULL
);

Вылетает:

Dynamic SQL Error
SQL error code = -104
Token unknown - line 4, char 31
FOREIGN




 
3JIA9I CyKA ©   (2002-09-24 16:20) [14]

Блин! Напиши как у меня и не парься!


 
Johnmen ©   (2002-09-24 16:28) [15]

Выкинь FOREIGN KEY - и все будет...
А вообще, посмотри InterBase SQL Reference - там подробно описан синтаксис...


 
koks ©   (2002-09-24 16:57) [16]

2 3JIA9I CyKA © Да уж придется делать так...

2 Johnmen - так ведь я от туда и привел цитату... и сделал точно также.... разве нет? и ошибка..


 
Johnmen ©   (2002-09-24 17:07) [17]

>koks © (24.09.02 16:57)

Нет ! Синтаксис констрейнта на поле отличается от синтаксиса констрейнта на запись !
Ты пытаешься сделать на поле (неверный синтаксис !). А 3JIA9I CyKA © привел пример на запись.

На поле :
"FACTORY_ID" INTEGER NOT NULL REFERENCES FACTORIES(ID),


 
kaif ©   (2002-09-24 22:17) [18]

2 koks

Проблема скорее всего в том, что во второй таблице нет
PRIMARY KEY
Таблицы без PRIMARY KEY, насколько я помню, не могут иметь связей вида FOREIGN KEY.
Добавь PRIMARY KEY во вторую таблицу и попробуй еще.


 
koks ©   (2002-09-25 09:33) [19]

2 Johnmen
"Нет ! Синтаксис констрейнта на поле отличается от синтаксиса констрейнта на запись !
Ты пытаешься сделать на поле (неверный синтаксис !). А 3JIA9I CyKA © привел пример на запись.

На поле :
"FACTORY_ID" INTEGER NOT NULL REFERENCES FACTORIES(ID),"

Огромное спасибо. Вот за такие разъяснения я и люблю этот форум !
Теперь полная ясность



Страницы: 1 вся ветка

Текущий архив: 2002.10.17;
Скачать: CL | DM;

Наверх




Память: 0.51 MB
Время: 0.092 c
6-56260
Dandy
2002-08-15 12:41
2002.10.17
Ошибка 10038


14-56271
Igor_thief
2002-09-20 14:58
2002.10.17
ListBox


1-56041
Fog
2002-10-08 11:53
2002.10.17
Переменная в массиве


3-56013
Шурик Ш
2002-09-26 16:50
2002.10.17
На какое событие повесить обработчик?


14-56289
Anatoly Podgoretsky
2002-09-22 11:24
2002.10.17
Что нового в Delphi for .NET