7.3.22. delete
#
7.3.22.1. 概要#
delete
コマンドは指定したテーブルのレコードを削除します。
7.3.22.1.1. カスケード削除#
複数のテーブルが関連付けられていることがあります。例えば、あるテーブルのキーが他のテーブルのレコードで参照されているような場合です。そのような場合にそのテーブルのキーを削除するなら、他のテーブルのレコードも削除されます。
他のテーブルのカラムの型がCOLUMN_VECTORなら、ベクターで参照しているキーだけが削除されます。
7.3.22.2. 構文#
delete table [key [id [filter]]]
7.3.22.3. 使い方#
使い方を示すために使うスキーマ定義とサンプルデータは以下の通りです。
"2"をキーとしてもつEntryテーブルからレコードを削除します。
実行例:
delete Entry 2
# [[0,1337566253.89858,0.000355720520019531],true]
select Entry
# [
# [
# 0,
# 1337566253.89858,
# 0.000355720520019531
# ],
# [
# [
# [
# 1
# ],
# [
# [
# "_id",
# "UInt32"
# ],
# [
# "_key",
# "UInt32"
# ],
# [
# "status",
# "ShortText"
# ]
# ],
# [
# 1,
# 1,
# "OK"
# ]
# ]
# ]
# ]
以下はカスケード削除の例です。
UsersテーブルのcountryカラムはCountryテーブルと関連しています。
"カスケード削除"は指定されたキーやそのキーを参照しているレコードを削除します。
実行例:
table_create Country TABLE_HASH_KEY ShortText
# [[0,1337566253.89858,0.000355720520019531],true]
table_create Users TABLE_HASH_KEY UInt32
# [[0,1337566253.89858,0.000355720520019531],true]
column_create Users name COLUMN_SCALAR ShortText
# [[0,1337566253.89858,0.000355720520019531],true]
column_create Users country COLUMN_SCALAR Country
# [[0,1337566253.89858,0.000355720520019531],true]
load --table Users
[
{"_key": 1, "name": "John", country: "United States"}
{"_key": 2, "name": "Mike", country: "United States"}
{"_key": 3, "name": "Takashi", country: "Japan"}
{"_key": 4, "name": "Hanako", country: "Japan"}
]
# [[0,1337566253.89858,0.000355720520019531],4]
load --table Country
[
{"_key": "United States"}
{"_key": "Japan"}
]
# [[0,1337566253.89858,0.000355720520019531],2]
delete Country "United States"
# [[0,1337566253.89858,0.000355720520019531],true]
select Country
# [
# [
# 0,
# 1337566253.89858,
# 0.000355720520019531
# ],
# [
# [
# [
# 1
# ],
# [
# [
# "_id",
# "UInt32"
# ],
# [
# "_key",
# "ShortText"
# ]
# ],
# [
# 2,
# "Japan"
# ]
# ]
# ]
# ]
select Users
# [
# [
# 0,
# 1337566253.89858,
# 0.000355720520019531
# ],
# [
# [
# [
# 4
# ],
# [
# [
# "_id",
# "UInt32"
# ],
# [
# "_key",
# "UInt32"
# ],
# [
# "country",
# "Country"
# ],
# [
# "name",
# "ShortText"
# ]
# ],
# [
# 1,
# 1,
# "",
# "John"
# ],
# [
# 2,
# 2,
# "",
# "Mike"
# ],
# [
# 3,
# 3,
# "Japan",
# "Takashi"
# ],
# [
# 4,
# 4,
# "Japan",
# "Hanako"
# ]
# ]
# ]
# ]
7.3.22.4. 引数#
table
レコードを削除するテーブルの名前を指定します。
key
削除するレコードのキーを指定します。TABLE_NO_KEYを対象となるテーブルに使用しているなら、指定したキーは無視されます。(そのような場合には 引数
id
を使います。)
id
削除するレコードのIDを指定します。 引数
id
を指定する場合、引数key
を指定してはいけません。
filter
レコードを特定するためのgrn_exprの式を指定します。引数
filter
を指定するなら、引数key
やid
を指定してはいけません。
7.3.22.5. 戻り値#
[HEADER, SUCCEEDED_OR_NOT]
HEADER
HEADER
については 出力形式 を参照してください。
SUCCEEDED_OR_NOT
コマンドの実行が成功するとtrueを返します。失敗するとエラーとしてfalseを返します。