Форум: "Начинающим";
Текущий архив: 2008.06.15;
Скачать: [xml.tar.bz2];
Вниз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;
Скачать: [xml.tar.bz2];
Память: 0.46 MB
Время: 0.005 c