powered by simpleCommunicator - 2.0.59     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Caché, Ensemble, DeepSee, MiniM, IRIS, GT.M [игнор отключен] [закрыт для гостей] / Удаление объектов при отношении Родитель-Потомок
19 сообщений из 19, страница 1 из 1
Удаление объектов при отношении Родитель-Потомок
    #35291038
AndSv1
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Здравствуйте. Очень надеюсь на помощь.
У меня 2 класса связаны отношение Parent-Children. А проблема в том, что связанные объекты ни потомка ни родителя я не могу удалить!!! Как это можно сделать???
Вот так я пытаюсь удалять:

<input name="Del" type="Button" value="Удалить" OnClick="#server(..Del(#(%request.Get("ID"))#))#">
<script language="Cache" Method="Del" arguments="ID:%Integer">
set cc=##class(SAVCW.GarTalon).%DeleteID(ID)
</script>

НО НИЧЕГО НЕ ПОЛУЧАЕТСЯ. Причем если у родителя нет потомков, то его получается удалить(как я понял так и должно быть, но как же удалять потомков тогда???)

Спасибо
...
Рейтинг: 0 / 0
Удаление объектов при отношении Родитель-Потомок
    #35291513
Фотография krvsa
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Что-то тут и термины наследования в ход пошли...

Так у вас там два класса (А и Б) и связь между ними "один ко многим"? Если так то, для удаления экземпляра из А нужно удалить все связаные с ним экземпляры в Б.

Сделайте тестовый пример... Попробуйте все это проделать там... Если не получится выкладывайте классы тут - посмотрим.
----------
Cache for Windows (Intel) 2007.1 (Build 369) Fri Jun 15 2007 15:25:42 EDT
Cache for Windows NT (Intel) 5.0.20 (Build 6305) Fri Sep 16 2005 11:54:10 EDT
...
Рейтинг: 0 / 0
Удаление объектов при отношении Родитель-Потомок
    #35292457
AndSv1
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Вот мои классы Pokupatel(Parent) и GarTalon(Children). Я их связал отношением Parent-Children. Экземпляры не удаляются ни из одного из них. Что нужно делать?

/// Информация о покупателе
Class SAVCW.Pokupatel Extends %Persistent [ ClassType = persistent, ProcedureBlock ]

{

/// Адрес покупателя
Property Address As %String(MAXLEN = 200);

/// Дата рождения
Property DR As %Date;

/// ФИО покупателя
Property FIO As %String(MAXLEN = 70) [ Required ];

/// отношение гарантийный талон "предок-потомок"
Relationship GarTal As SAVCW.GarTalon [ Cardinality = children, Inverse = KodPok ];



/// Информация о гарантийных талонах
Class SAVCW.GarTalon Extends %Persistent [ ClassType = persistent, ProcedureBlock ]

{

/// Дата покупки товара
Property DatePok As %Date [ Required ];

/// Отношение покупатель
Relationship KodPok As SAVCW.Pokupatel [ Cardinality = parent, Inverse = GarTal ];


/// Отношение товар
Relationship KodTov As SAVCW.Tovar [ Cardinality = one, Inverse = GarTal ];

Relationship ServList As SAVCW.ServiceList [ Cardinality = many, Inverse = KodGT ];

Index KodTovIndex On KodTov;
...
Рейтинг: 0 / 0
Удаление объектов при отношении Родитель-Потомок
    #35292581
Фотография krvsa
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
AndSv1Вот мои классы Pokupatel(Parent) и GarTalon(Children).
В вашем примере участвуют еще классы:
SAVCW.Tovar
SAVCW.ServiceList
Т.ч. пример явно не тестовый. А вам нужно сделать тестовый... Используйте только два класса.

А что вы хотите получить от связи Parent-Children?
...
Рейтинг: 0 / 0
Удаление объектов при отношении Родитель-Потомок
    #35292655
AndSv1
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
А какая разница сколько у меня классов??
В отношении участвуют 2 класса Pokupatel и GarTalon и мне нужно сделать удаление экземпляров класса GarTalon! Но ничего не получается удалить тем способом, что я в начале привел! (
...
Рейтинг: 0 / 0
Удаление объектов при отношении Родитель-Потомок
    #35292658
AndSv1
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
А при отношении один ко многим всё работает!!
...
Рейтинг: 0 / 0
Удаление объектов при отношении Родитель-Потомок
    #35293318
Фотография krvsa
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Так что вы хотите получить от связи Parent-Children?
----------
Cache for Windows (Intel) 2007.1 (Build 369) Fri Jun 15 2007 15:25:42 EDT
Cache for Windows NT (Intel) 5.0.20 (Build 6305) Fri Sep 16 2005 11:54:10 EDT
...
Рейтинг: 0 / 0
Удаление объектов при отношении Родитель-Потомок
    #35294476
Morisson
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
AndSv1А при отношении один ко многим всё работает!!

Похоже, что вы пытались удалить последнего Child в этом Parent.
Тут все дело в специфике отношения Parent-Child. Это отношение называется зависимым (dependent).

Если вы создали Parent и он пока без Child - то может спокойно существовать и быть удален сам по себе.
Child можно удалять по одному, кроме последнего в Parent.

Если у Parent есть Child, то удалить его можно только вместе с последним Child .
Сделать это можно если открыть транзакцию, в которой удалить и Child и Parent.

ts
##class(Parent).%DeleteId(pid)
##class(Child).%DeleteId(chid)
tc

где pid - ид-р Parent, а chid - ид-р последнего Child
...
Рейтинг: 0 / 0
Удаление объектов при отношении Родитель-Потомок
    #35295783
Блок А.Н.
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Че-то непонятно, почему нельзя удалить последний child.
И при чем тут транзакции?
...
Рейтинг: 0 / 0
Удаление объектов при отношении Родитель-Потомок
    #35295862
Фотография krvsa
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Блок А.Н.Че-то непонятно, почему нельзя удалить последний child.
Таков закон.
Блок А.Н.И при чем тут транзакции?
Именно она позволяет это сделать...
...
Рейтинг: 0 / 0
Удаление объектов при отношении Родитель-Потомок
    #35295894
Ptn
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Всю жизнь удалял либо парента - либо всех детишек, скопом либо выборочно...

Про прикол с последним чилдреном - первый раз слышу ...

Автору темы - а у вас какая структура хранения ? дети - это "подтаблица" парента ?
...
Рейтинг: 0 / 0
Удаление объектов при отношении Родитель-Потомок
    #35296589
Morisson
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
PtnВсю жизнь удалял либо парента - либо всех детишек, скопом либо выборочно...

Про прикол с последним чилдреном - первый раз слышу ...

Автору темы - а у вас какая структура хранения ? дети - это "подтаблица" парента ?


Насчет последнего чилдрена это конечно шутка...
но удалять чилдренов, не удаляя при этом Parent не получается . Это касается именно отношения Parent-Child
...
Рейтинг: 0 / 0
Удаление объектов при отношении Родитель-Потомок
    #35296813
Ptn
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Что значить "не удаляя парента" ???

Вот есть реестровый документ - Ведомость (парент) - у него кучка Строк Ведомости (чилдрены)

Код: plaintext
1.
2.
3.
4.
5.
6.
// пример  1 
DELETE FROM Строка_Ведомости WHERE Ведомость= 33 
// пример  2 
DELETE FROM Строка_Ведомости WHERE Ведомость= 33  AND Номер_строки= 3 
// пример  3 
w ##class(Строка_Ведомости).%DeleteById("33||3")

Разве с этим какие либо проблемы ???
...
Рейтинг: 0 / 0
Удаление объектов при отношении Родитель-Потомок
    #35296857
Блок А.Н.
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
krvsaТаков закон.
Нету таких законов и вообще в программировании алгоритмы, а не законы.
А если в алгоритме вдруг откуда не возьмись появляются странные ограничения, это вызывает вопросы. Мне все таки кажется, что такого ограничения нет.

krvsa
И при чем тут транзакции?
Именно она позволяет это сделать...
Опять же как мне наивно казалось до сих пор, транзакция в каше сама по себе не изменяет алгоритм и работу команд, а всего лишь делает отметку в журнале, чтобы можно было ее откатить.
Я не прав?
...
Рейтинг: 0 / 0
Удаление объектов при отношении Родитель-Потомок
    #35296870
Фотография krvsa
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Блок А.Н.Я не прав?
Я с такими связями дело не имел... Т.ч. я "сливаюсь"...
...
Рейтинг: 0 / 0
Удаление объектов при отношении Родитель-Потомок
    #35296919
Ptn
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
э-э-э ... а вы уверены что проблема в parent-child ?
У Вас чуть ниже в детишках еще прописано :
Код: plaintext
1.
2.
3.
4.
/// Отношение товар
Relationship KodTov As SAVCW.Tovar [ Cardinality = one, Inverse = GarTal ];

Relationship ServList As SAVCW.ServiceList [ Cardinality = many, Inverse = KodGT ];

Вот с one-many у меня отдаленно схожие проблемы были ...
...
Рейтинг: 0 / 0
Удаление объектов при отношении Родитель-Потомок
    #35299634
Фотография krvsa
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
У меня личный интерес...
Для какой цели вообще можно использовать отношение parent-child?
Вчем разница с one-many?
----------
Cache for Windows (Intel) 2007.1 (Build 369) Fri Jun 15 2007 15:25:42 EDT
Cache for Windows NT (Intel) 5.0.20 (Build 6305) Fri Sep 16 2005 11:54:10 EDT
...
Рейтинг: 0 / 0
Удаление объектов при отношении Родитель-Потомок
    #35300944
Ptn
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Альтернатива массивам - имеющих проблемы с размером коллекции.
То же самое зависимое отношение, возможность создавать свои собственные индексы и триггеры - плюс легкость обработки в прямом доступе, ибо структура хранения вполне себе понятная - плюс автоматическое убиение детишек при удалении предка.
...
Рейтинг: 0 / 0
Удаление объектов при отношении Родитель-Потомок
    #35301755
Фотография krvsa
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
PtnАльтернатива массивам - имеющих проблемы с размером коллекции.
Благо я такое не использовал никогда...
Ptnплюс автоматическое убиение детишек при удалении предка.
Ясно...

Но я сторонник связи "один ко многим"...
...
Рейтинг: 0 / 0
19 сообщений из 19, страница 1 из 1
Форумы / Caché, Ensemble, DeepSee, MiniM, IRIS, GT.M [игнор отключен] [закрыт для гостей] / Удаление объектов при отношении Родитель-Потомок
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]