Текущий архив: 2003.06.05;
Скачать: CL | DM;
Вниз
Организация ссылочной целостности Найти похожие ветки
← →
Jaxtor (2003-05-16 14:24) [0]Есть таблица PRODUCTTYPE:
CREATE TABLE PRODUCTTYPE (
PRODUCTTYPEID ID NOT NULL,
PRODUCTTYPE SHORT_STR
);
ALTER TABLE PRODUCTTYPE ADD CONSTRAINT PK_PRODUCTTYPE PRIMARY KEY (PRODUCTTYPEID);
Есть таблица PROP_DESCR:
CREATE TABLE PROP_DESCR (
PROP_DESCR INTEGER NOT NULL,
FIELDID VARCHAR(2) NOT NULL,
DESCRIPTION SHORT_STR,
"TYPE" SHORT_STR
);
ALTER TABLE PROP_DESCR ADD CONSTRAINT PK_PROP_DESCR PRIMARY KEY (PROP_DESCR, FIELDID);
Можно ли сделать, чтобы при удалении записи из таблицы PRODUCTTYPE с ID = <опр.значение> удалялись записи из таблицы
PROP_DESCR с ID = <опр.значение>? Просто у меня не получается организовать ссылочную целостность.
← →
Jaxtor (2003-05-16 14:40) [1]мда... слишком сложный вопрос задал я....
← →
Zacho (2003-05-16 14:55) [2]
> Jaxtor © (16.05.03 14:40)
Да ничего сложного, просто у народа еще и другие дела, кроме формума, есть :-)
А вот ответ:
ALTER TABLE PROP_DESCR ADD CONSTRAINT FK_PROP_DESCR_PROODUCTTYPE FOREIGN KEY (PROP_DESCR) REFERENCES PRODUCTTYPE (ID) ON DELETE CASCADE;
А вообще-то стоит почитать Data Definition Guide.
← →
Jaxtor (2003-05-16 14:59) [3]>Zacho
This operation is not defined for system tables.
unsuccessful metadata update.
could not find UNIQUE INDEX with specified columns.
← →
Jaxtor (2003-05-16 15:02) [4]>А вообще-то стоит почитать Data Definition Guide.
А я считаю, что лучше почитать книжку по реляционным базам данных
об организации ссылочной целостности между таблицами связанными
сложным ключом.
← →
Avreliy (2003-05-16 15:16) [5]А что, если создать триггер удаления для таблицы PRODUCTTYPE и в него вставить созданную ранее исполняемую процедуру, в которую будет передаваться параметр :PRODUCTTYPEID и, которая будет удалять необходимые строки из таблицы PROP_DESCR?
← →
Zacho (2003-05-16 15:20) [6]
> Jaxtor © (16.05.03 14:59)
Не очень внимательно посмотрел твой пост :( Надо:
ALTER TABLE PROP_DESCR ADD CONSTRAINT FK_PROP_DESCR_PROODUCTTYPE FOREIGN KEY (PROP_DESCR) REFERENCES PRODUCTTYPE ( PRODUCTTYPEID) ON DELETE CASCADE;
> Jaxtor © (16.05.03 15:02)
А вот если бы читал Data Definition Guide, то и сам бы сообразил, в чем ошибка.
А книжки по РСУБД читать конечно надо, кстати весьма советую К. Дж. Дейт " Введение в системы баз данных", но и документацию по используемому тобой инструменту знать обязательно. И таких примитивных вопросов возникать не будет. Или ты осваиваешь IB "методом тыка" ? Тогда удачи в наступании на грабли :-)
P.S. Не обижайся на некоторую резкость, но твои проблемы происходят именно от не желания читать стандартную документацию по IB.
← →
Jaxtor (2003-05-16 15:21) [7]>Avreliy
Я думал об этом... Но у меня большая база и целиком основана на ссылочной целостности(не на триггерах). Нарушать единообразие не
желательно.
← →
Zacho (2003-05-16 15:24) [8]
> Avreliy (16.05.03 15:16)
Процедура вообще не нужна, достаточно триггера, а начиная с IB 5.0 в IB есть полноценная поддержка DRI (Declarative Referential Integrity) так что и триггер не нужен.
Господа, читайте же документацию, и не придется изобретать велосипеды !
← →
Jaxtor (2003-05-16 15:28) [9]>Zacho Думаешь все работает?
Неа.
This operation is not defined for system tables.unsuccessful metadata update.object PRODUCTTYPE is in use.
А документацию по IB я читаю...
← →
Zacho (2003-05-16 15:36) [10]
> Jaxtor © (16.05.03 15:28)
Блин, ну сделай дисконнект/коннект и проследи, что бы это было единственное подключение к IB.
> А документацию по IB я читаю...
Не заметно. Иначе бы знал о DRI.
Кстати, в DataDef все расписано подробно и с примерами.
← →
Jaxtor (2003-05-16 15:38) [11]> Зато я знаю IB API функции...
← →
Johnmen (2003-05-16 15:47) [12]>Jaxtor © (16.05.03 15:38)
>> Зато я знаю IB API функции...
Наизусть ? И все параметры ? ДА ТЫ ПРОСТО КРУТ !!!
А мы все - ЛАМЕРЫ...:)
← →
Jaxtor (2003-05-16 16:12) [13]Правда вот с WinAPI пока трудновато мне...
Знаю только несколько десятков функций.
← →
Johnmen (2003-05-16 16:22) [14]>Jaxtor © (16.05.03 16:12)
>Правда вот с WinAPI пока трудновато мне...
>Знаю только несколько десятков функций.
Это очень мало ! Надо знать по крайней мере 1000 !
:)))
← →
Jaxtor (2003-05-16 16:26) [15]Ну вот, в чем-то выигрываешь, в чем-то проигрываешь...
Всего знать нельзя.
← →
Johnmen (2003-05-16 16:43) [16]>Jaxtor © (16.05.03 16:26)
>Всего знать нельзя.
Естественно ! Только это не причина нежелания прочитать элементарный хелп...:)
← →
dtm (2003-05-16 16:50) [17]Тогда уж правильней будет
"ON DELETE CASCADE ON UPDATE CASCADE", а то через неделю снова этот же вопрос задаст.
> Jaxtor
А ты случайно не в IBConsole работаешь с IB? =)
Страницы: 1 вся ветка
Текущий архив: 2003.06.05;
Скачать: CL | DM;
Память: 0.48 MB
Время: 0.007 c