Top.Mail.Ru
Мастера DELPHI, Delphi programming community Титульная страница Поиск, карта сайта Написать письмо 
| Новости | Поиск | FAQ | Статьи | Книги | Новости VCL |
| Форумы ЧАТ | Орешник | KOL и MCK |
Форумы -» Основная («Начинающим»)/ Базы / WinAPI / Компоненты / Сети / Media / Игры / Corba и COM / KOL / FreePascal / .Net / Прочее / RSDN.ORG

« предыдущая ветвь | форум | следующая ветвь »

Организация ссылочной целостности [D6, IB6.x]


Jaxtor ©   (2003-05-16 14:24:00) 

Есть таблица 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 = <опр.значение>? Просто у меня не получается организовать ссылочную целостность.


dtm   (2003-05-16 16:50:00) [1]

Тогда уж правильней будет
"ON DELETE CASCADE ON UPDATE CASCADE", а то через неделю снова этот же вопрос задаст.

> Jaxtor

А ты случайно не в IBConsole работаешь с IB? =)


Johnmen   (2003-05-16 16:43:00) [2]

>Jaxtor © (16.05.03 16:26)
>Всего знать нельзя.

Естественно ! Только это не причина нежелания прочитать элементарный хелп...:)


Jaxtor   (2003-05-16 16:26:00) [3]

Ну вот, в чем-то выигрываешь, в чем-то проигрываешь...
Всего знать нельзя.


Johnmen   (2003-05-16 16:22:00) [4]

>Jaxtor © (16.05.03 16:12)
>Правда вот с WinAPI пока трудновато мне...
>Знаю только несколько десятков функций.

Это очень мало ! Надо знать по крайней мере 1000 !
:)))



Jaxtor   (2003-05-16 16:12:00) [5]

Правда вот с WinAPI пока трудновато мне...
Знаю только несколько десятков функций.


Johnmen   (2003-05-16 15:47:00) [6]

>Jaxtor © (16.05.03 15:38)
>> Зато я знаю IB API функции...

Наизусть ? И все параметры ? ДА ТЫ ПРОСТО КРУТ !!!
А мы все - ЛАМЕРЫ...:)



Jaxtor   (2003-05-16 15:38:00) [7]

> Зато я знаю IB API функции...


Zacho   (2003-05-16 15:36:00) [8]


> Jaxtor © (16.05.03 15:28)

Блин, ну сделай дисконнект/коннект и проследи, что бы это было единственное подключение к IB.

> А документацию по IB я читаю...

Не заметно. Иначе бы знал о DRI.
Кстати, в DataDef все расписано подробно и с примерами.


Jaxtor   (2003-05-16 15:28:00) [9]

>Zacho Думаешь все работает?
Неа.

This operation is not defined for system tables.unsuccessful metadata update.object PRODUCTTYPE is in use.


А документацию по IB я читаю...


Zacho   (2003-05-16 15:24:00) [10]


> Avreliy (16.05.03 15:16)

Процедура вообще не нужна, достаточно триггера, а начиная с IB 5.0 в IB есть полноценная поддержка DRI (Declarative Referential Integrity) так что и триггер не нужен.
Господа, читайте же документацию, и не придется изобретать велосипеды !


Jaxtor   (2003-05-16 15:21:00) [11]

>Avreliy
Я думал об этом... Но у меня большая база и целиком основана на ссылочной целостности(не на триггерах). Нарушать единообразие не
желательно.


Zacho   (2003-05-16 15:20:00) [12]


> 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.


Avreliy   (2003-05-16 15:16:00) [13]

А что, если создать триггер удаления для таблицы PRODUCTTYPE и в него вставить созданную ранее исполняемую процедуру, в которую будет передаваться параметр :PRODUCTTYPEID и, которая будет удалять необходимые строки из таблицы PROP_DESCR?


Jaxtor   (2003-05-16 15:02:00) [14]

>А вообще-то стоит почитать Data Definition Guide.
А я считаю, что лучше почитать книжку по реляционным базам данных
об организации ссылочной целостности между таблицами связанными
сложным ключом.


Jaxtor   (2003-05-16 14:59:00) [15]

>Zacho
This operation is not defined for system tables.
unsuccessful metadata update.
could not find UNIQUE INDEX with specified columns.


Zacho   (2003-05-16 14:55:00) [16]


> 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:40:00) [17]

мда... слишком сложный вопрос задал я....


Наверх

Титульная страница Поиск, карта сайта Написать письмо