Модераторы: Akella
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Внешние ключи 
:(
    Опции темы
RSV
Дата 28.9.2005, 09:18 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 61
Регистрация: 27.6.2005

Репутация: нет
Всего: нет



Код

CREATE TABLE ClientS
(
    Id INTEGER NOT NULL,
    Name VARCHAR (20),

    PRIMARY KEY (Id)
);

CREATE TABLE Photo
(
    Id INTEGER NOT NULL,
    Photo BLOB sub_type 0 segment size 80,
    Client_Fk INTEGER NOT NULL,

    PRIMARY KEY (Id)
);

CREATE GENERATOR Photo_gen;
CREATE GENERATOR Client_gen;

ALTER TABLE Photo ADD CONSTRAINT fkPhoto FOREIGN KEY (Client_Fk)
REFERENCES ClientS (Id) ON DELETE CASCADE ON UPDATE CASCADE;


Ворос: Как заполнить поле Client_Fk из таблицы Photo
значением Id из таблицы Clients.

Это сообщение отредактировал(а) Alex - 2.10.2005, 08:08
PM MAIL   Вверх
Alex
Дата 2.10.2005, 08:08 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Экс. модератор
Сообщений: 4147
Регистрация: 25.3.2002
Где: Москва

Репутация: 7
Всего: 162



через insert smile


--------------------
Написать можно все - главное четко представлять, что ты хочешь получить в конце. 
PM Skype   Вверх
santilaas
Дата 2.10.2005, 10:04 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 322
Регистрация: 28.8.2005
Где: Блага

Репутация: нет
Всего: нет



Если используешь компоненты FibPlus, то достаточно в свойстве Dataset-а InsertSQL для таблицы Photo указать следующее:
Код

Insert into Photo(Id, Photo, Client_Fk) 
Values (:Id,:Photo,:Client_Fk)

т.е. то, что введёшь в поля ввода значений (Id, Photo, Client_Fk) в своём приложении, то и сохранится в твоей БД

Примерно тоже самое реализуется и при использовании компонентов IBX, но компоненты FibPlus гораздо круче.

Это сообщение отредактировал(а) santilaas - 2.10.2005, 10:05


--------------------
[
PM MAIL   Вверх
nnm
Дата 2.10.2005, 14:41 (ссылка)    |    (голосов: 0) Загрузка ... Загрузка ... Быстрая цитата Цитата


Unregistered











Постановка вопроса "заполнить значением" крайне мутная:
- непонятно, где: на стороне клиента или на стороне сервера;
- непонятно, когда: во время insert или во время update;
- генераторы упомянуты, а использование их не описано;
- т.д.
Включаем телепатический локатор:
- видимо, неспроста упомянуты генераторы и "ON DELETE CASCADE ON UPDATE CASCADE".
Вывод: клиента не трогать, сделать это с помощью триггера (пусть сервер корячится).
Система мерещится такой:
- записи в PHOTO добавляют сразу после инсерта в CLIENTS;
- добавляемые фотки относятся к последнему клиенту;
- пользователь один.

Код
SET TERM ^ ;

create trigger TRG_Photo_BI for PHOTO
active before insert position 0
as
begin
  IF (new.Id is null)  THEN new.Id = gen_id(Photo_gen, 1);
  IF (new.Client_Fk is null)  THEN new.Client_Fk = gen_id(Client_gen, 0);
end
^

SET TERM ; ^

Если добавляемые фотки - не всегда относятся к последнему клиенту, то делать с помощью ХП.
ЗЫ: не очень здорово в таблице PHOTO иметь поле PHOTO.
  Вверх
Guest
Дата 2.10.2005, 14:45 (ссылка)    |    (голосов: 0) Загрузка ... Загрузка ... Быстрая цитата Цитата


Unregistered











Цитата(santilaas)
Примерно тоже самое реализуется и при использовании компонентов IBX, но компоненты FibPlus гораздо круче.

- не "Примерно тоже самое", а то же самое;
- IBX бесплатные, а ФИБы - 22 еврика (хотя нам вас, олигархов, не понять...).
  Вверх
santilaas
Дата 4.10.2005, 10:49 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 322
Регистрация: 28.8.2005
Где: Блага

Репутация: нет
Всего: нет



Guest, конечно, я с тобой согласен, что в этом примитивном случае и Fib-ы и IBX реализуют одно и тоже, но если ты вплотную поработаешь и с теми, и с другими компонентами, то ты ощутишь ту разницу, о которой я сказал выше.
А насчёт олигарха: просто надо иметь хороших знакомых.


--------------------
[
PM MAIL   Вверх
nnm, он же Guest в этом топике
Дата 4.10.2005, 20:38 (ссылка)    |    (голосов: 0) Загрузка ... Загрузка ... Быстрая цитата Цитата


Unregistered











2 santilaas:
a) работал;
b) ощутил;
c) есть хорощие знакомые (не олигархи) smile
d) считаю, что надо честно оплачивать труд отечественного разработчика.

На фоне всего этого скажу, что недолюбливаю Бузаджи и уважаю Gregory Deatz, автора FIBC (напомню, FREE InterBase Components), из которых выросли и IBX, и FIBPlus. А принципиальное отличие FIBPlus от FIBC заключается (IMHO) в тех злосчастных 22 евриках. Посему честнее было бы убрать букву "F" из названия продукта.
Я не отказываюсь от пункта d), но всё же для контраста: InterBase -> FireBird ...
А такой замечательный продукт, как IBExpert ($ 200 для буржуинов и бесплатно для win1251) ? Да мало ли...
  Вверх
Alex
Дата 4.10.2005, 20:52 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Экс. модератор
Сообщений: 4147
Регистрация: 25.3.2002
Где: Москва

Репутация: 7
Всего: 162



Модератор: Давайте вернёмся к теме обсуждения.


--------------------
Написать можно все - главное четко представлять, что ты хочешь получить в конце. 
PM Skype   Вверх
RSV
Дата 6.10.2005, 07:49 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 61
Регистрация: 27.6.2005

Репутация: нет
Всего: нет



Цитата(nnm @ 2.10.2005, 14:41)
Постановка вопроса "заполнить значением" крайне мутная:
- непонятно, где: на стороне клиента или на стороне сервера;
- непонятно, когда: во время insert или во время update;
- генераторы упомянуты, а использование их не описано;
- т.д.
Включаем телепатический локатор:
- видимо, неспроста упомянуты генераторы и "ON DELETE CASCADE ON UPDATE CASCADE".
Вывод: клиента не трогать, сделать это с помощью триггера (пусть сервер корячится).
Система мерещится такой:
- записи в PHOTO добавляют сразу после инсерта в CLIENTS;
- добавляемые фотки относятся к последнему клиенту;
- пользователь один.

Код
SET TERM ^ ;

create trigger TRG_Photo_BI for PHOTO
active before insert position 0
as
begin
  IF (new.Id is null)  THEN new.Id = gen_id(Photo_gen, 1);
  IF (new.Client_Fk is null)  THEN new.Client_Fk = gen_id(Client_gen, 0);
end
^

SET TERM ; ^

Если добавляемые фотки - не всегда относятся к последнему клиенту, то делать с помощью ХП.
ЗЫ: не очень здорово в таблице PHOTO иметь поле PHOTO.

Спасибо за помощь!!! Но у меня еще один вопрос.
Что делать если я пишу приложение под нескольких
клиентов использую VC++? Заранее огромное спасибо.
PM MAIL   Вверх
SergeBS
Дата 6.10.2005, 15:30 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Завсегдатай
Сообщений: 1111
Регистрация: 10.6.2005
Где: Владимир

Репутация: нет
Всего: 22



RSV
Цитата

Спасибо за помощь!!! Но у меня еще один вопрос.
Что делать если я пишу приложение под нескольких
клиентов использую VC++? Заранее огромное спасибо.

Читать умные книжки. Совсем начало: Грубер, Затем "Мир InterBase". На чужих подсказках клиент-сервер не сделаешь. А чтобы легче жилось - бежать с "плюсов" на BCB/Delphi. Не в пример быстрее разработка пойдет. И еще есть IBExpert, чтобы руками меньше работать. И ibase.ru с KDV в качестве одного из действующих лиц (он кое-что и на халяву может дать smile В смысле задарма. На некоторых моральных условиях.
А вставка blob кучу раз и KDV и другими разъяснялась наглядно и подробно.


PM MAIL   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "Interbase"
Alex

Обязательно указание:

1. Версию InterBase (Firebird, Yaffil)

2. Способа доступа (ADO, BDE, IBX и т.д.)

  • КАК ПРАВИЛЬНО ОФОРМИТЬ КОД - ЗДЕСЬ
  • КАК ПРАВИЛЬНО УКАЗАТЬ ТЕКСТ ОШИБКИ - ЗДЕСЬ
  • Действия модераторов можно обсудить здесь
  • С просьбами о написании курсовой, реферата и т.п. обращаться сюда
  • FAQ раздела лежит здесь!

Если Вам понравилась атмосфера форума, заходите к нам чаще! С Уважением, Akella.

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | Firebird, Interbase | Следующая тема »


 




[ Время генерации скрипта: 0.0487 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.