Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / Caché, Ensemble, DeepSee, MiniM, IRIS, GT.M [игнор отключен] [закрыт для гостей] / Инициализация поля по разному из объектов и sql / 5 сообщений из 5, страница 1 из 1
09.11.2011, 13:54
    #37518147
Блок А.Н.
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Инициализация поля по разному из объектов и sql
Как сделать, чтобы при инициализации поле по разному инициализировалось, а зависимости от того, создается ли новый объект инсертом или как новый объект?

Каше 2011.1
...
Рейтинг: 0 / 0
09.11.2011, 14:26
    #37518312
servit
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Инициализация поля по разному из объектов и sql
Блок А.Н. ,

Class del.t1 Extends %Persistent
{

Property c1 As %Integer [ ReadOnly, InitialExpression = 555 ];

Property c2 As %Integer;

Method %OnNew(initvalue As %CacheString) As %Status [ Private, ServerOnly = 1 ]
{
  set i%c1=333
  Quit $$$OK
}

}

Проверка:
do ##class(del.t1).%New().%Save()

insert into del.t1 default values
idc1c21333<null>2555<null>
...
Рейтинг: 0 / 0
09.11.2011, 20:59
    #37519114
Блок А.Н.
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Инициализация поля по разному из объектов и sql
У меня проблема, что в InitialExpression стоит вычисляющая функция, причем в случае объекта она не должна запуститься или если запустится, чтобы поняла, из объекта и сделала то что нужно по другому.
Случай, когда она запустится, а потом мы перетрем ее значение не подходит.
...
Рейтинг: 0 / 0
10.11.2011, 11:06
    #37519394
servit
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Инициализация поля по разному из объектов и sql
Блок А.Н. ,
КодClass del.t1 Extends %Persistent
{

Property c1 As %Integer [ReadOnly];
Property c2 As %Integer;

ClassMethod Initialize(isObject As %Boolean={$$$YES}) As %Integer
{
  Quit $Select(isObject:333,1:555)
}

Method %OnNew(
  c1 As %Integer = {..Initialize()},
  c2 As %Integer) As %Status [ Private, ServerOnly = 1 ]
{
  Set i%c1=c1
  Set i%c2=c2
  Quit $$$OK
}

Trigger InsertBefore1 [ Event = INSERT ]
{
  Set {c1}=..Initialize($$$NO)
}

ClassMethod Test()
{
  Do ..%KillExtent()
  Do ..%New().%Save()
  &sql(insert into del.t1 default values)
}

}
...
Рейтинг: 0 / 0
10.11.2011, 12:28
    #37519637
Блок А.Н.
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Инициализация поля по разному из объектов и sql
Хм, триггер это действительно логично.
Че-то я не подумал.
Спасибо.
...
Рейтинг: 0 / 0
Форумы / Caché, Ensemble, DeepSee, MiniM, IRIS, GT.M [игнор отключен] [закрыт для гостей] / Инициализация поля по разному из объектов и sql / 5 сообщений из 5, страница 1 из 1
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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