MR_COUNTER列を含む行の挿入

データはMR_COUNTER列を含む複数リージョン表に挿入されますが、次の2つの場合にMR_COUNTER列値のデフォルト値0が生成されます。
  • MR_COUNTER列のinsert_clauseでキーワードDEFAULが使用されている場合。
  • INSERT句でMR_COUNTER列がスキップされた場合。

例1: MR_COUNTER列にデータを挿入する際のDEFAULT句の指定

CREATE Table myTable( name STRING,
                      count INTEGER AS MR_COUNTER,
                      PRIMARY KEY(name)) IN REGIONS DEN,LON;
INSERT INTO myTable VALUES ("Bob", DEFAULT);

SELECT * FROM myTable;
   {"name":"Bob","count":0}

例2: 複数リージョン表へのデータの挿入時のMR_COUNTER列のスキップ

CREATE Table myTable( name STRING,
                      count INTEGER AS MR_COUNTER,
                      PRIMARY KEY(name)) IN REGIONS DEN,LON;
INSERT INTO myTable(name) VALUES ("Chris');

SELECT * FROM myTable;
   {"name":"Chris","count":0}

例3: MR_COUNTER列がスキップされ、DEFAULT句が指定されていない場合のエラー

MR_COUNTER列にDEFAULT句が指定されておらず、列がINSERT句からスキップされていない場合は、次のようにエラーがスローされます。
CREATE Table myTable( name STRING,
                      count INTEGER AS MR_COUNTER,
                      PRIMARY KEY(name)) IN REGIONS DEN,LON;
INSERT INTO myTable VALUES ("Chris")

Error handling command execute 'INSERT INTO myTable VALUES ("Chris")':
Error: at (1, 0) The number of VALUES expressions is not equal to the number of table columns
MR_COUNTER列に値を明示的に挿入することはできません。DEFAULTコンストラクトを常に使用するか、INSERT句でMR_COUNTER列をスキップする必要があります。INSERT句またはAPIを使用してMR_COUNTER列に値を挿入しようとすると、次のようにエラーがスローされます。
CREATE Table myTable ( name STRING,
                       count INTEGER AS MR_COUNTER,
                       PRIMARY KEY(name)) IN REGIONS DEN;
INSERT INTO myTable VALUES("Tom",0)';

Error handling command execute 'INSERT INTO myTable VALUES("Tom",0)': Error: at (1, 38) MRCounter column must use DEFAULT construct.

MR_COUNTERデータ型のJSON列への行の挿入:

例: JSON MR_COUNTERを使用した複数リージョン表へのデータの挿入

JSON MR_COUNTERを使用して複数リージョン表に行を挿入する場合は、MR_COUNTERに値0を指定する必要があります。

ノート:

  • ゼロ以外の値を明示的に指定した場合でも、すべてのMR_COUNTERデータ型に最初に値0が割り当てられます。これは、INTEGER、LONGまたはNUMBER以外の値を指定しようとした場合も有効です。
  • JSON MR_COUNTERの挿入時にキーワードDEFAULTを指定することはできません。
  • 宣言されたJSON MR_COUNTERフィールドに値を指定せずに、またはキーワードDEFAULTを使用せずに、MR表にデータを挿入しようとすると、エラーが返されます。
INSERT INTO demoJSONMR VALUES ("Anna",
    {
        "id" : 1,
        "counter" : 0,
        "person" : {
            "age" : 10,
            "count" : 0,
            "number" : 100
        }
    }
);

SELECT * FROM demoJSONMR;
{"name":"Anna","jsonWithCounter":{"id" : 1,"counter":0,
                                 "person":{"age":10,"count":0,"number":100}
                }
}