ユーザー定義型(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で定義されているraceslistには、中かっこで囲まれた要素があり、その周りを角かっこで囲んでいます。
    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にネストされているUDTfrozenであるため、テーブルのクエリー時には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である必要があり、個々のフィールド値は更新できません。