powered by simpleCommunicator - 2.0.59     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Caché, Ensemble, DeepSee, MiniM, IRIS, GT.M [игнор отключен] [закрыт для гостей] / проблема при удалении данных
3 сообщений из 3, страница 1 из 1
проблема при удалении данных
    #37633028
Ymka2007
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Вот, столкнулся с проблемой при удалении данных

есть некий класс в котором есть свойства, по которым формируются индексы:
Код: sql
1.
2.
3.
4.
5.
6.
7.
Index I3 On (idPlayer, rDat, getRanking);
Index I5 On idPlayer [ Data = (getFIO)]
//вычисляемые
Property getRanking As %Integer [ Calculated, SqlComputeCode = {
	set {*}=##class(R.RANKING1).getData({id},1)}, SqlComputed ];
Property getFIO As %String [ Calculated, SqlComputeCode = {
	set {*}=##class(R.RANKING1).getData({id},4)}, SqlComputed ];


причем getRanking, getFIO вычисляемые!

после расчетов возникает необходимость удалить все данные на определенную дату
так вот, удаляется все и данные и индексы, но не все. Только индекс I3 почему то не удаляется
посмотрел журнал
в итоге команда kill на все что можно, кроме I3

$zv="Cache for Windows (x86-32) 2010.1.1 (Build 503) "

подскажите в чем причина, подозреваю что в вычисляемом поле, которое воткнуто в узел глобали
но почему?
...
Рейтинг: 0 / 0
проблема при удалении данных
    #37638389
servit
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Ymka2007 ,

Такое случается, когда значение вычисляемого поля недетерминировано .
Другими словами индекс не удаляется, потому что значение поля и значение в индексе уже не совпадают.

Раз у Вас используется индекс на вычисляемое поле, то это больше похоже на "Triggered computed".
В этом случае [Calculated] не нужен: Two Types of Computed SQL Fields

Сделайте небольшой тест над следующим классом:

Class del.d Extends %Persistent
{

Index I3 On (idPlayer, getRanking);

Index I3Calc On (idPlayer, getRankingCalc);

Property idPlayer As %Integer [ InitialExpression = 3 ];

// вычисляемые

Property getRanking As %Integer [ SqlComputeCode = {set {*}=##class(del.d).getData({ID})}, SqlComputed ];

Property getRankingCalc As %Integer [ Calculated, SqlComputeCode = {set {*}=##class(del.d).getData({ID})}, SqlComputed ];

ClassMethod getData(ID As %String) As %String
{
  q $random(50*ID)
  //q 50*ID
}

}

1) в Портале добавьте три записи: insert into del.d default values

2) выполните несколько раз один и тот же запрос: select * from del.d
Замечаете разницу в поведении вычисляемых полей?

3) удалите все данные из таблицы: delete from del.d
Угадайте, какой индекс остался в ^del.dI?

4) повторите тест, но уже с детерминированными значениями.
...
Рейтинг: 0 / 0
проблема при удалении данных
    #37641362
Ymka2007
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
servit,

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


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