Форум: "Базы";
Текущий архив: 2002.05.23;
Скачать: [xml.tar.bz2];
Внизизменить все поля в таблице при изменении такихже полей в др. таб Найти похожие ветки
← →
Саша (2002-04-27 10:37) [0]Подскажите пожалуйста, как решит такую задачу:
Есть таблица в ней одно поле выбирается из другой таблицы
(справочник), как сделать так чтобы при изменении поля в справочнике изменялись все поля с этим значением, а при удалении из справочника, если есть такое значение в главной таблице, то выводить сообшени что удалить нельзя. Я не чего умнее пойска (locate или ченибудь в этом роде) и изменения предумать немогу. Помогите решить эту проблемку по умному. Заранее благодарен.
← →
Johnmen (2002-04-27 10:41) [1]Не приведен тип БД.
← →
Саша (2002-04-27 11:02) [2]Dbase
← →
Johnmen (2002-04-27 11:16) [3]Если правильно понял, то :
1.связывание полей надо делать по ключевому полю в справочнике и ссылочному в основной табл., тогда будет <...при изменении поля в справочнике изменялись все поля с этим значением...>
2.при удалении из справочника проверять, имеются ли ссылки на удаляемую запись в осн.табл., используя соотв.запрос
← →
Desdechado (2002-04-28 15:36) [4]Для dBase ссылочная целостность реализуется именно таким ручным поиском :((
← →
roottim (2002-04-28 16:18) [5]+
т.к реализацию триггеров сделать нельзя и по утверждению Desdechado © (28.04.02 15:36) ссылочную целостность не поддерживает -
их подобие можно реализовать на евенсы dataset-а
AfterPost BeforDelete
пример отбалды.. незнаю на чем все это пишется но пр так!
t1 гл t2 спр-к
q1 tquery
procedure TForm1.t2AfterPost(DataSet: TDataSet);
begin
q1.sql.text:="update t1 set idT2 = :p1 where idT2 = :p2";
q1.ParamByName("p1").Value := t2.FieldByName("id").NewValue;
q1.ParamByName("p2").Value := t2.FieldByName("id").OldValue;
q1.ExecSql;
end;
и на удаление в том же духе
сам не проверял... но идея такова!
Locate конечно использовать ненадо..все на уровне запросов
Страницы: 1 вся ветка
Форум: "Базы";
Текущий архив: 2002.05.23;
Скачать: [xml.tar.bz2];
Память: 0.45 MB
Время: 0.007 c