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}
}
}