ユーザー定義型(UDT)カラム
値をユーザー定義型(UDT)カラムに書き込みます。
データを格納するためユーザー定義型(UDT)がテーブルに指定されている場合は、INSERT
またはUPDATE
を使用してデータを入力します。
手順
UDTへのデータの挿入
-
INSERT
またはUPDATE
コマンドを使用し、ユーザー定義型を中かっこで囲み、ユーザー定義型内のキーと値の各ペアをコロンで区切って、ユーザー定義型のデータを設定するか、置き換えます。INSERT INTO cycling.cyclist_stats (id, lastname, basics) VALUES ( e7ae5cf3-d358-4d99-b900-85902fda9bb0, 'FRAME', { birthday : '1993-06-18', nationality : 'New Zealand', weight : null, height : null } );
注: 値を持たないUDT要素に対してはnull値が含まれることに注意してください。UDTの各要素にnull値またはそれ以外の値を含める必要があります。 -
別のカラム型にネストされているUDTにデータを挿入できます。たとえば、レース名、日付およびタイムがUDTで定義されているracesのlistには、中かっこで囲まれた要素があり、その周りを角かっこで囲んでいます。
INSERT INTO cycling.cyclist_races (id, lastname, firstname, races) VALUES ( 5b6962dd-3f90-4c93-8f61-eabfa4a803e2, 'VOS', 'Marianne', [{ race_title : 'Rabobank 7-Dorpenomloop Aalburg',race_date : '2015-05-09',race_time : '02:58:33' }, { race_title : 'Ronde van Gelderland',race_date : '2015-04-19',race_time : '03:22:23' }] );
注: listにネストされているUDTはfrozenであるため、テーブルのクエリー時にはlist全体が読み取られます。
UDT内の個々のフィールド・データの更新
-
DataStax Enterprise5.1以降では、非コレクション・フィールドのみを含むユーザー定義型を使用して、個々のフィールド値を更新できます。ユーザー定義型データの個々のフィールドは、
UPDATE
コマンドを使用して更新します。目的のキーと値のペアをコマンドで定義します。更新するには、UDTをCREATE TABLE
コマンド内でunfrozenデータ型として定義する必要があります。CREATE TABLE cycling.cyclist_stats ( id UUID, lastname text, basics basic_info, PRIMARY KEY (id) ); INSERT INTO cycling.cyclist_stats (id, lastname, basics) VALUES (220844bf-4860-49d6-9a4b-6b5d3a79cbfb, 'TIRALONGO', { birthday:'1977-07-08',nationality:'Italy',weight:'63 kg',height:'1.78 m' }); UPDATE cyclist_stats SET basics.birthday = '2000-12-12' WHERE id = 220844bf-4860-49d6-9a4b-6b5d3a79cbfb;
UDTは
basics basic_info
を使用してテーブルで定義されています。次の例では、挿入された行を示し、次にUDTのbasics
内のbirthday
の値のみを更新します。SELECT * FROM cycling.cyclist_stats WHERE id = 220844bf-4860-49d6-9a4b-6b5d3a79cbfb; id | basics | lastname --------------------------------------+--------------------------------------------------------------------------------------------------------+----------- 220844bf-4860-49d6-9a4b-6b5d3a79cbfb | {birthday: '2000-12-12 08:00:00.000000+0000', nationality: 'Italy', weight: '63 kg', height: '1.78 m'} | TIRALONGO
この結果の変化は明らかですが、国籍、体重および身長の値が変更されていないことも同様に明らかです。注: テーブルを作成する際にコレクション・フィールドを含むUDTはfrozenである必要があり、個々のフィールド値は更新できません。