MR_COUNTER列を含む行の挿入
データは、MR_COUNTER列がある複数リージョン表に挿入されますが、次の2つの場合には、システムによってMR_COUNTER列値にデフォルト値ゼロが生成されます。
- MR_COUNTER列のINSERT句でキーワード
DEFAULT
が使用されている場合。 - INSERT句でMR_COUNTER列がスキップされた場合。
MR_COUNTER列にデータを挿入する際のDEFAULT句の指定
例7-15 DEFAULT句を使用して複数リージョン表に行を挿入する
MR_COUNTERを含めてDENリージョンとLONリージョンに複数リージョン表を作成します:
CREATE Table myTable( name STRING,
count INTEGER AS MR_COUNTER,
PRIMARY KEY(name)) IN REGIONS DEN,LON
カウンタにDEFAULT句を指定することでその行を表に挿入します:
INSERT INTO myTable VALUES ("Bob", DEFAULT)
カウンタ値をフェッチします:
SELECT * FROM myTable
出力:{"name":"Bob","count":0}
複数リージョン表へのデータ挿入時のMR_COUNTER列のスキップ
例7-16 MR_COUNTERに値を指定せずに複数リージョン表に行を挿入する
MR_COUNTERを含めてDENリージョンとLONリージョンに複数リージョン表を作成します:
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}
MR_COUNTER列がスキップされずDEFAULT句が指定されていない場合のエラー
行にすべての列値を挿入する際には、MR_COUNTER列にDEFAULT句を指定する必要があります。そうしないと、エラーが表示されます。
例7-17 MR_COUNTERに値を指定せずに行のすべての列を挿入する
MR_COUNTERを含めてDENリージョンとLONリージョンに複数リージョン表を作成します:
CREATE Table myTable( name STRING,
count INTEGER AS MR_COUNTER,
PRIMARY KEY(name)) IN REGIONS DEN,LON
行のすべての列を挿入します。カウンタにDEFAULT値を指定していないことに注目してください。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列に値を挿入しようとすると、次のようにエラーがスローされます。
例7-18 MR_COUNTERにDEFAULT以外の値を指定することで複数リージョン表に行を挿入する
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を使用して複数リージョン表に行を挿入するときは、MR_COUNTERに値ゼロを指定する必要があります。
ノート:
- ゼロ以外の値を明示的に指定した場合でも、システムによって最初にすべてのMR_COUNTERデータ型に値ゼロが割り当てられます。これは、INTEGER、LONGまたはNUMBER以外の値を指定しようとした場合も有効です。
- JSON MR_COUNTERの挿入時にキーワードDEFAULTを指定することはできません。
- 宣言されたJSON MR_COUNTERフィールドに値を指定せずに、またはキーワードDEFAULTを使用せずに、MR表にデータを挿入しようとすると、エラーが返されます。
例7-19 JSON MR_COUNTERを使用して複数リージョン表にデータを挿入する
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}
}
}