|
ここは旧式の4DドキュメントWebサイトです。最新のアップデートされたドキュメントを読むには新サイトをご利用下さい→ developer.4d.com |
|||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
|
4D v19.8
entity.drop( )
|
||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| entity.drop ( {mode} ) -> 戻り値 | ||||||||
| 引数 | 型 | 説明 | ||||||
| mode | 倍長整数 |
|
dk force drop if stamp changed: スタンプがその間に変更されていた場合でも強制的にドロップする | |||||
| 戻り値 | オブジェクト |
|
ドロップオペレーションの結果 | |||||
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 | エンティティはもうデータ内に存在していません。このエラーは以下のような場合に起き得ます:
割り当てられたstatusText: "エンティティはもう存在しません" |
| dk status locked | 3 | エンティティはペシミスティック・ロックでロックされています。 割り当てられたstatusText: "既にロックされています" |
| dk status serious error | 4 | 深刻なエラーとは低レベルのデータベースエラー(例:重複キーなど)、ハードウェアエラーなどです。 割り当てられたstatusText: "その他のエラー" |
| dk status stamp has changed | 2 | エンティティの内部的なスタンプ値がデータ内に保存されているエンティティのものと合致しません(オプティミスティック・ロック)。
|
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 casedk 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
プロダクト: 4D
テーマ: ORDA - エンティティ
初出: 4D v17
ランゲージリファレンス ( 4D v19)
ランゲージリファレンス ( 4D v19.1)
ランゲージリファレンス ( 4D v19.4)
ランゲージリファレンス ( 4D v19.5)
ランゲージリファレンス ( 4D v19.6)
ランゲージリファレンス ( 4D v19.7)
ランゲージリファレンス ( 4D v19.8)
コメントを追加