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

Вниз

InterBase   Найти похожие ветки 

 
Favorit   (2008-05-21 20:40) [0]

Подскажите почему
Вот мои таблицы
CREATE TABLE "TOVAR"
(
 "ID_TOVARA" SMALLINT NOT NULL,
 "TIP_TOVARA" CHAR(40),
 "KOL-VO_TOVARA" SMALLINT NOT NULL,
PRIMARY KEY ("ID_TOVARA")
);
и я создаю еще одну
CREATE TABLE "POSTYPLENIE"
(
 "ID_TOVARA" SMALLINT NOT NULL,
 "NUM_OF_SKLAD" "NUM_OF_SKLAD_TYPE",
 "DATA_POSTYPLENIYA" DATE NOT NULL,
 "SROK" SMALLINT NOT NULL,
 "PRICE" FLOAT,
PRIMARY KEY ("ID_TOVARA", "NUM_OF_SKLAD"),
FOREIGN KEY ("ID_TOVARA") REFERENCES TOVAR ("ID_TOVARA"),
FOREIGN KEY ("NUM_OF_SKLAD") REFERENCES TOVAR ("NUM_OF_SKLAD")
);
Но
could not find UNIQUE INDEX with specified columns

Есть же все праймери кейс!!!!!


 
Johnmen ©   (2008-05-21 21:26) [1]

Где определение домена?
В чем сакральный смысл типа SMALLINT?
И наконец - когда возникает данная ошибка?


 
Loginov Dmitry ©   (2008-05-21 22:58) [2]

> PRIMARY KEY ("ID_TOVARA", "NUM_OF_SKLAD"),


А что, один и тот же товар дважды на склад не сможет поступить?
Тогда на кой нужны 2 таблицы? Хватит одной.

Зачем всем полям вподряд вставлять NOT NULL? Впервую очередь это необходимо для первичного (зачастую и внешнего ключей). В остальных случаях - только проблем себе наживать (имхо).

Где в таблице TOVAR присутствует поле "NUM_OF_SKLAD"?
Что означает объявление поля  "NUM_OF_SKLAD" "NUM_OF_SKLAD_TYPE"?
Зачем использовать SMALLINT?
Зачем использовать CHAR?
Зачем повсюду вставлять кавычки?


 
palva ©   (2008-05-21 23:03) [3]

> ...REFERENCES TOVAR ("NUM_OF_SKLAD")
А что, в таблице TOVAR должно быть поле "NUM_OF_SKLAD", да еще иметь ключ Primary Key?
Но там уже есть другой Primary Key - или я что-то не понял?


 
Favorit   (2008-05-21 23:48) [4]

Извеняюсь я не скопировал...
Вот мои таблицы
SET SQL DIALECT 3;

/* CREATE DATABASE "Base" PAGE_SIZE 4096

DEFAULT CHARACTER SET  */
/* Domain definitions */
CREATE DOMAIN "NUM_OF_SKLAD_TYPE" AS SMALLINT
 CHECK (VALUE IN(1,2,3)) NOT NULL;

/* Table: POSTYPLENIE, Owner: SYSDBA */

CREATE TABLE "POSTYPLENIE"
(
 "ID_TOVARA" SMALLINT NOT NULL,
 "NUM_OF_SKLAD" "NUM_OF_SKLAD_TYPE",
 "DATA_POSTYPLENIYA" DATE NOT NULL,
 "SROK" SMALLINT NOT NULL,
 "PRICE" FLOAT,
PRIMARY KEY ("ID_TOVARA", "NUM_OF_SKLAD")
);

/* Table: REALIZATION, Owner: SYSDBA */

CREATE TABLE "REALIZATION"
(
 "ID_REALIZATORA" SMALLINT NOT NULL,
 "ID_TOVARA" SMALLINT NOT NULL,
 "NUM_OF_SKLAD" "NUM_OF_SKLAD_TYPE",
 "DATA_REALIZATION" DATE NOT NULL,
 "PRICE_OF_REALOZATION" FLOAT,
PRIMARY KEY ("ID_REALIZATORA", "ID_TOVARA", "NUM_OF_SKLAD")
);

/* Table: REALIZATOR, Owner: SYSDBA */

CREATE TABLE "REALIZATOR"
(
 "ID_REALIZATORA" SMALLINT NOT NULL,
 "NAME" CHAR(40),
 "ADDRESS" CHAR(50),
PRIMARY KEY ("ID_REALIZATORA")
);

/* Table: SKLAD, Owner: SYSDBA */

CREATE TABLE "SKLAD"
(
 "NUM_OF_SKLAD" "NUM_OF_SKLAD_TYPE",
 "TIP_SKLADA" CHAR(40),
 "SQUARE" FLOAT,
PRIMARY KEY ("NUM_OF_SKLAD")
);

/* Table: TOVAR, Owner: SYSDBA */

CREATE TABLE "TOVAR"
(
 "ID_TOVARA" SMALLINT NOT NULL,
 "TIP_TOVARA" CHAR(40),
 "KOL-VO_TOVARA" SMALLINT NOT NULL,
PRIMARY KEY ("ID_TOVARA")
);
ALTER TABLE "POSTYPLENIE" ADD FOREIGN KEY ("ID_TOVARA") REFERENCES TOVAR ("ID_TOVARA");
ALTER TABLE "POSTYPLENIE" ADD FOREIGN KEY ("NUM_OF_SKLAD") REFERENCES SKLAD ("NUM_OF_SKLAD");
ALTER TABLE "REALIZATION" ADD FOREIGN KEY ("ID_REALIZATORA") REFERENCES REALIZATOR ("ID_REALIZATORA");

/* Grant Roles for this database */

/* Grant permissions for this database */


 
Favorit   (2008-05-21 23:49) [5]

и у меня не получается
ALTER TABLE "REALIZATION" ADD FOREIGN KEY ("ID_TOVARA") REFERENCES POSTYPLENIE ("ID_TOVARA");
ALTER TABLE "REALIZATION" ADD FOREIGN KEY ("NUM_OF_SKLAD") REFERENCES POSTYPLENIE ("NUM_OF_SKLAD");
выдает ошибку
Unsuccessful metadata update
could not find UNIQUE INDEX with specified columns
Statement: ALTER TABLE "REALIZATION" ADD FOREIGN KEY ("ID_TOVARA") REFERENCES POSTYPLENIE ("ID_TOVARA")


 
Игорь Шевченко ©   (2008-05-21 23:57) [6]


> Statement: ALTER TABLE "REALIZATION" ADD FOREIGN KEY ("ID_TOVARA")
> REFERENCES POSTYPLENIE ("ID_TOVARA")


Ну так естественно - в таблице POSTYPLENIE первичный ключ из двух полей
> PRIMARY KEY ("ID_TOVARA", "NUM_OF_SKLAD")


а ты пытаешься FOREIGN KEY сделать из одного поля.
Так не бывает, либо вводи второе поле в таблицу REALIZATION, либо отказывайся от FOREIGN KEY



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

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

Наверх




Память: 0.48 MB
Время: 0.019 c
15-1210080182
Ivan2s
2008-05-06 17:23
2008.06.15
Word страницы


15-1205425934
Lio2007
2008-03-13 19:32
2008.06.15
Delphi 2007. Глюк с контекстным меню в IDE.


2-1211292641
LightRipple
2008-05-20 18:10
2008.06.15
Работа ф-ии RtlPrefixUnicodeString


2-1211547311
МаксИкс
2008-05-23 16:55
2008.06.15
Как получить имя текущей формы ?


2-1211435887
oleg_teacher
2008-05-22 09:58
2008.06.15
отчет