7.3.21. delete#

7.3.21.1. 概要#

delete コマンドは指定したテーブルのレコードを削除します。

7.3.21.1.1. カスケード削除#

複数のテーブルが関連付けられていることがあります。例えば、あるテーブルのキーが他のテーブルのレコードで参照されているような場合です。そのような場合にそのテーブルのキーを削除するなら、他のテーブルのレコードも削除されます。

他のテーブルのカラムの型がCOLUMN_VECTORなら、ベクターで参照しているキーだけが削除されます。

7.3.21.2. 構文#

delete table [key [id [filter]]]

7.3.21.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.21.4. 引数#

table

レコードを削除するテーブルの名前を指定します。

key

削除するレコードのキーを指定します。TABLE_NO_KEYを対象となるテーブルに使用しているなら、指定したキーは無視されます。(そのような場合には 引数 id を使います。)

id

削除するレコードのIDを指定します。 引数 id を指定する場合、引数 key を指定してはいけません。

filter

レコードを特定するためのgrn_exprの式を指定します。引数 filter を指定するなら、引数 keyid を指定してはいけません。

7.3.21.5. 戻り値#

[HEADER, SUCCEEDED_OR_NOT]

HEADER

HEADER については 出力形式 を参照してください。

SUCCEEDED_OR_NOT

コマンドの実行が成功するとtrueを返します。失敗するとエラーとしてfalseを返します。

7.3.21.6. 参考#

load