Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Базы";
Текущий архив: 2002.10.17;
Скачать: [xml.tar.bz2];

Вниз

Синтаксическая ошибка в 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;
Скачать: [xml.tar.bz2];

Наверх





Память: 0.48 MB
Время: 0.035 c
14-56308
dimon79
2002-09-18 11:53
2002.10.17
компиляция проекта


1-56207
Andy BitOff
2002-10-07 19:45
2002.10.17
ListView


1-56138
zam2000
2002-10-09 12:29
2002.10.17
как сделать печать в файл и указать имя файла куда писать


3-55934
Alias_
2002-09-24 22:56
2002.10.17
Вопрос по -2000


1-56186
Jake
2002-10-07 14:38
2002.10.17
Фон в TreeView...





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский