ここは旧式の4DドキュメントWebサイトです。最新のアップデートされたドキュメントを読むには新サイトをご利用下さい→ developer.4d.com

ホーム

 
4D v19.8
entity.drop( )

entity.drop( ) 


 

entity.drop ( {mode} ) -> 戻り値 
引数   説明
mode  倍長整数 in dk force drop if stamp changed: スタンプがその間に変更されていた場合でも強制的にドロップする
戻り値  オブジェクト in ドロップオペレーションの結果

説明   

entity.drop( ) メソッドはデータクラスにリレートされたテーブル内で、エンティティに格納されているデータをデータストアから削除します。エンティティそのものはメモリ内に残るという点に注意してください。

マルチユーザー、あるいはマルチプロセスアプリケーションにおいて、entity.drop( ) メソッドは"オプティミスティック・ロック"機構のもとで実行されます。これはレコードが保存されるたびに内部的なロックスタンプが自動的に増加していくという機構です。詳細な情報については、エンティティロッキング のページを参照してください。

デフォルトで、mode 引数が省略された場合、同じエンティティが他のプロセスあるいは他のユーザーによって同時に変更された場合(例: スタンプが変更された場合など)にはエラーを返します(以下参照)。
そうでない場合、mode 引数にはdk force drop if stamp changed オプションを渡すことができます。この場合、(プライマリーキーが引き続き同じで)スタンプが変更されていた場合でもエンティティはドロップされます。

結果オブジェクト

entity.drop( ) によって返されたオブジェクトには以下のプロパティが格納されます:

プロパティ詳細
successブールドロップが成功した場合にはtrue、それ以外の場合にはfalse
エラーの場合にのみ利用可能:
status(*)数値エラーコード、以下参照
statusText(*)テキストエラーの詳細、以下参照
ペシミスティック・ロックエラーの場合にのみ利用可能:
LockKindTextテキスト"Locked by record"
lockInfoオブジェクトロックの元についての情報
task_id数値プロセスID
user_nameテキストマシン上でのセッションユーザー名
user4d_aliasテキストSET USER ALIAS によって定義されたユーザーエイリアス、または4D データベースディレクトリ内のユーザー名
user4d_id数値4D ユーザー番号(4D バイナリーデータベースでのみ利用可能)
host_nameテキストマシン名
task_nameテキストプロセス名
client_versionテキスト
深刻なエラーの場合にのみ利用可能(深刻なエラーとは、プライマリーキーを重複させようとした、ディスクがいっぱいであった、などです):
errorsオブジェクトのコレクション
messageテキストエラーメッセージ
component signatureテキスト内部コンポーネント署名(例 "dmbg" はデータベースコンポーネントを表します)
errCode数値エラーコード

(*) エラー時にはResult オブジェクトのstatus あるいは statusText プロパティに以下のいずれかの値が返されます:

定数 コメント
dk status entity does not exist anymore 5 エンティティはもうデータ内に存在していません。このエラーは以下のような場合に起き得ます:
  • エンティティがドロップされている(スタンプは変更されていて、メモリ空間は解放されている)
  • エンテイィ亭はドロップされていて、他のプライマリーキー値を持っているもので置き換えられている(スタンプは変更されていて、新しいエンティティがメモリ空間を使用している)。entity.drop( )を使用している場合、このエラーはdk force drop if stamp changed オプションを使用した場合に返される場合があります。entity.lock( )を使用している場合、このエラーはdk reload if stamp changed オプションを使用した場合に返される場合があります。

割り当てられたstatusText: "エンティティはもう存在しません"

dk status locked 3 エンティティはペシミスティック・ロックでロックされています。
割り当てられたstatusText: "既にロックされています"
dk status serious error 4 深刻なエラーとは低レベルのデータベースエラー(例:重複キーなど)、ハードウェアエラーなどです。
割り当てられたstatusText: "その他のエラー"
dk status stamp has changed 2 エンティティの内部的なスタンプ値がデータ内に保存されているエンティティのものと合致しません(オプティミスティック・ロック)。
  • entity.save( ) の場合: dk auto merge オプションが使用されていない場合に限りエラー
  • entity.drop( ) の場合: dk force drop if stamp changed オプションが使用されていない場合に限りエラー
  • entity.lock( ) の場合: dk reload if stamp changed オプションが使用されていない場合に限りエラー
割り当てられたstatusText: "スタンプが変更されています"

dk force drop if stamp changed オプションを使用しない例:

 C_OBJECT($employees;$employee;$status)
 $employees:=ds.Employee.query("lastName=:1";"Smith")
 $employee:=$employees.first()
 $status:=$employee.drop()
 Case of
    :($status.success)
       ALERT("You have dropped "+$employee.firstName+" "+$employee.lastName) //ドロップされたエンティティはメモリ内には残ります
    :($status.status=dk status stamp has changed)
       ALERT($status.statusText)
 End case

dk force drop if stamp changed オプションを使用する例:

 C_OBJECT($employees;$employee;$status)
 $employees:=ds.Employee.query("lastName=:1";"Smith")
 $employee:=$employees.first()
 $status:=$employee.drop(dk force drop if stamp changed)
 Case of
    :($status.success)
       ALERT("You have dropped "+$employee.firstName+" "+$employee.lastName) //ドロップされたエンティティはメモリ内には残ります。
    :($status.status=dk status entity does not exist anymore)
       ALERT($status.statusText)
 End case



参照 

entity.save( )

 
プロパティ 

プロダクト: 4D
テーマ: ORDA - エンティティ

 
ページの目次 
 
履歴 

初出: 4D v17

 
ARTICLE USAGE

ランゲージリファレンス ( 4D v19)
ランゲージリファレンス ( 4D v19.1)
ランゲージリファレンス ( 4D v19.4)
ランゲージリファレンス ( 4D v19.5)
ランゲージリファレンス ( 4D v19.6)
ランゲージリファレンス ( 4D v19.7)
ランゲージリファレンス ( 4D v19.8)