リスト・フィールド
1つまたは複数の値をリスト・カラムに書き込みます。
データを格納するためlistがテーブルに指定されている場合は、INSERT
またはUPDATE
を使用してデータを入力します。
手順
-
値を角かっこで囲んでデータをlistに挿入します。
INSERT INTO cycling.upcoming_calendar (year, month, events) VALUES (2015, 06, ['Criterium du Dauphine','Tour de Suisse']);
-
UPDATE
コマンドを使用して、値をlistに挿入します。要素を角かっこで囲み、加算(+)演算子を使用して、listの先頭に1つの要素を書き込みます。UPDATE cycling.upcoming_calendar SET events = ['The Parx Casino Philly Cycling Classic'] + events WHERE year = 2015 AND month = 06;
-
UPDATE
コマンドで、新しい要素データとリスト名の順序を入れ替えて、listに1つの要素を追加書き込みします。UPDATE cycling.upcoming_calendar SET events = events + ['Tour de France Stage 10'] WHERE year = 2015 AND month = 06;
これらの更新操作は、書き込み前の読み取りなしで内部で行われます。listに新しい要素の追加/先頭書き込みを行うと、新しい要素のみが書き込まれます。 -
listのインデックス位置を角かっこで囲んで指定して、特定の位置に1つの要素を追加します。
UPDATE cycling.upcoming_calendar SET events[2] = 'Vuelta Ciclista a Venezuela' WHERE year = 2015 AND month = 06;
要素を特定の位置に追加するために、データベースではリスト全体を読み取ってから、新しいインデックス位置にシフトする必要のあるリストの部分を再度書き込みます。その結果として、特定の位置への要素の追加は、リストに要素の追加/先頭書き込みを行う場合に比べてレイテンシーが長くなります。 -
listから要素を削除するには、
DELETE
コマンドと、角かっこで囲んだリスト・インデックス位置を使用します。たとえば、前のステップでlistに追加したeventを削除します。DELETE events[2] FROM cycling.upcoming_calendar WHERE year = 2015 AND month = 06;
インデックス位置を使用してlistから要素を削除するには、内部読み取りが必要です。さらに、クライアント側アプリケーションでは、リスト全体を読み取り、削除する値を検索することによってのみインデックス位置を検出できるため、操作のレイテンシーが増えます。操作の完了前に別のスレッドまたはクライアントがリストの先頭に要素を書き込んだ場合には、誤ったデータが削除されます。 -
UPDATEコマンド、減算演算子(-)、角かっこで囲んだリスト値を使用して、特定の値を持つすべての要素を削除します。
UPDATE cycling.upcoming_calendar SET events = events - ['Tour de France Stage 10'] WHERE year = 2015 AND month = 06;
前の例よりも、この例に示した方法でUPDATE
コマンドを使用する方が安全で高速であるため、こちらの方法を推奨します。