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を指定するなら、引数keyやidを指定してはいけません。