2015-02-03 6 views
0

У меня есть данные в глобальном в этом формате:Intersystems Caché пользовательских хранений хранимого объекта

^kza("mltab","TAB","Dta",1,1) = 3341 
^kza("mltab","TAB","Dta",1,2) = "First Name" 
^kza("mltab","TAB","Dta",1,3) = "type1" 
^kza("mltab","TAB","Dta",1,4) = 7400.11 
^kza("mltab","TAB","Dta",2,1) = 3614 
^kza("mltab","TAB","Dta",2,2) = "Second Name" 
^kza("mltab","TAB","Dta",2,3) = "type2" 
^kza("mltab","TAB","Dta",2,4) = 7600.11 

Мой класс объект выглядит следующим образом:

Class Kza.Employees Extends %Persistent [ StorageStrategy = EmpStorage ] 
{ 

    Property num As %Integer; //unique identifier 
    Property id As %Integer; 
    Property num As %Integer; 
    Property name As %String; 
    Property type As %String; 
    Property pay As %Double; 
    Index NewIndex1 On id [ IdKey, PrimaryKey, Unique ]; 

    <Storage name="EmpStorage"> 
    <ExtentSize>100000</ExtentSize> 
    <SequenceNumber>8</SequenceNumber> 
    <SQLMap name="MasterMap"> 
     <ConditionalWithHostVars></ConditionalWithHostVars> 
     <Data name="num"> 
     <Node>1</Node> 
     </Data> 
     <Data name="name"> 
     <Node>2</Node> 
     </Data> 
     <Data name="pay"> 
     <Node>4</Node> 
     </Data> 
     <Data name="type"> 
     <Node>3</Node> 
     </Data> 
     <Global>^kza</Global> 
     <RowIdSpec name="1"> 
     <Expression>{L1}</Expression> 
     <Field>id</Field> 
     </RowIdSpec> 
     <Subscript name="1"> 
     <Expression>"mltab"</Expression> 
     </Subscript> 
     <Subscript name="2"> 
     <Expression>"TAB"</Expression> 
     </Subscript> 
     <Subscript name="3"> 
     <Expression>"Dta"</Expression> 
     </Subscript> 
     <Subscript name="4"> 
     <Expression>{id}</Expression> 
     </Subscript> 
     <Type>data</Type> 
    </SQLMap> 
    <StreamLocation>^Kza.EmployeesS</StreamLocation> 
    <Type>%CacheSQLStorage</Type> 
</Storage> 
} 

Проблема заключается в том, что если я

insert into Kza.Employees(id, num, name, pay, type) VALUES(132, 3214, 'Name Second', 89000, 'type5') 

результат:

^kza("mltab","TAB","Dta",1) = "" 
^kza("mltab","TAB","Dta",1,1) = 3214 
^kza("mltab","TAB","Dta",1,2) = "Name Second" 
^kza("mltab","TAB","Dta",1,3) = 'type 5' 
^kza("mltab","TAB","Dta",1,4) = 89000 

Но мне нужно, чтобы не сохранили первую строчку, так КАК УСТРАНИТЬ СОХРАНИТЬ ЭТОТ УЗЕЛ:

^KZA ("mltab", "TAB", "Dta", 1) = " "

ответ

2

Попробуйте присвоить нумерацию, имя, тип или оплату (если таковые не могут быть пустыми).
Caché определяет узлы^kza ("mltab", "TAB", "Dta", 1), потому что, если все остальные 4 поля являются нулевыми, существование^kza ("mltab", "TAB", "Dta ", 1) узел определяет существование строки. Другими словами, если num, name, type или pay - все значения null и^kza («mltab», «TAB», «Dta», 1) не определено, строка не будет определена.

 Смежные вопросы

  • Нет связанных вопросов^_^