Lade...
 

Einfügen

Insert

Insert(zugriffsAusdruck), Insert(STACK), Insert(zugriffsAusdruck, backRef), Insert(STACK, STACK)

Parameter: ein Zugriffsausdruck, Name der Rückreferenz.

Stack
Stack Position Beschreibung
Stack(In) Top Zielobjekt
  Top-1 einzufügendes Objekt
Stack(Out) Top -

Das Objekt aus Stack-Top-1 wird in die - ausgehend vom Zielobjekt - über den Zugriffsausdruck erreichte Collection c eingefügt. Beide Objekte müssen entweder transient oder persistent sein. Wenn die im Zielobjekt ausgewählte Collection im DDI als m-1- oder m-m-Referenz deklariert wurde, ist der Name einer Rückreferenz als zweiter Operand anzugeben. Die Rückreferenz (Pointer oder Collection) wird nach Überprüfung des im DDI angegeben Typs gesetzt. Insert wird von Einträgen im DDI gesteuert und bricht mit einem Fehler ab, wenn versucht wird, eine der im DDI getroffenen Festlegungen zu verletzen. Dies ist der Fall, wenn

  • der Datentyp des zu einzufügenden Objekts nicht zu dem im DDI eingetragenen Referenz-Datentyp passt (d.h. das einzufügende Objekt ist keine Instanz der im DDI eingetragenen oder einer davon abgeleiteten Klasse)
  • das Collection c enthaltende Objekt o nicht zu dem im DDI eingetragenen BackReferenz-Datentyp passt (d.h. Objekt o ist keine Instanz der im DDI als Backreference-Typ eingetragenen oder einer davon abgeleiteten Klasse)
  • die zum Beginn der Operation vorgefundene Referenz hinsichtlich Hin- oder Rückreferenz einen Typwiderspruch zum DDI enthält
  • bei einer m-1-Relation die Rückreferenz gar nicht auf Objekt o zeigt
  • bei einer m-n-Relation Objekt o kein Element der Backreference-Collection ist.
    Mit [ O1, O2, ..., On ] Ox Insert(coll, backRef) werden die Objekte O1, ..., On in die - über Objekt Ox erreichte - Collection coll eingefügt:

Achtung!
veraltet, bitte Link benutzen.
Insert sollte nur dann auf Objekten aufgerufen werden, wenn der Zugriffspfad zu einer CX_CONDITIONED_BAG ausgewertet wird oder das Objekt selbst ein CX_CONDITIONED_BAG ist. In den Fällen muss Insert verwendet werden.

Stack
Stack Position Beschreibung
Stack(In) Top Zielobjekt
  Top-1 ]
  Top-2 On
  . . . . . .
  Top-n-1 O1
  Top-n-2 [
Stack(Out)   -

 

Insert

Stack
Stack Position Beschreibung
Stack(In) Top eine Collection
  Top-1 einzufügendes Objekt
Stack(Out) Top -

Das Objekt aus Stack-Top-1 wird in die auf dem Stack-Top liegende Collection eingefügt.

Achtung: Das Einfügen von geclusterten Objekten in ein SET oder BAG führt zu enormen Performanceproblemen. Siehe hierzu: Clusterung und Collections.

Achtung: Diese Form der Insert-Anweisungen kann nicht auf Collections angewendet werden, die zu einer im DDI eingetragenen 1-n- oder m-n-Relation gehören (siehe Beispiel).

Mit [ O1, O2, ..., On ] coll Insert werden die Objekte O1, ..., On in die Collection vom Stack-Top aus (also umgekehrt!) eingefügt:

Stack
Stack Position Beschreibung
Stack(In) Top Collection
  Top-1 ]
  Top-2 On
  . . . . . .
  Top-n-1 O1
  Top-n-2 [
Stack(Out)  

_

 

Die letzte Variante von Insert kopiert alle Elemente aus der Collection(Quelle) in die Collection(Ziel) und verhält sich somit genauso, wie der Operator +=. Hierbei dürfen die Collections auch unterschiedliche Typen haben (transient/persistent).

Stack
Stack Position Beschreibung
Stack(In) Top Collection (Ziel)
  Top-1 Collection (Quelle)

Hinweis:  Bei einem persistenten Objekt / Collection beginnt eine Transaktion.

 

232555 wird Insert auch für CX_JSON_ARRAY unterstützt und verhält sich genauso wie die Append-Methode.

Stack Position Beschreibung
Stack(In) Top CX_JSON_ARRAY
  Top-1 einzufügendes Element
Stack(Out) Top -