列挙型はENUM()
文を使用して宣言されます。この文を使用する場合は、受入れ可能な列挙値を宣言する必要があります。
主キーがUIDで2番目のフィールドに列挙を持つシンプルな2つのフィールドの表を定義するには、次のスクリプトを使用します。
CREATE TABLE myTable ( uid INTEGER, myEnum ENUM (Apple,Pears,Oranges), PRIMARY KEY (uid) )
列挙フィールドでは、CHECK
制約はサポートされていません。
列挙フィールドでは、DEFAULT
およびNOT NULL
制約がサポートされています。詳細は、「DEFAULT」を参照してください。
列挙を書き込むにはRow.putEnum()
を使用します。このメソッドとともに使用する列挙値が-enum-values
パラメータで定義されている値と一致しない場合、IllegalArgumentException
がスローされます。
TableAPI tableH = kvstore.getTableAPI(); Table myTable = tableH.getTable("myTable"); Row row = myTable.createRow(); row.put("uid", 12345); row.putEnum("myEnum", "Pears"); tableH.put(row, null, null);
列挙を読み込むにはRow.get().asEnum()
を使用します。これにより、EnumValue
クラス・インスタンスが返されます。次にEnumValue.get()
を使用して格納されている列挙値を文字列として取得できます。かわりにEnumValue.getIndex()
を使用して、格納されている値の索引の位置を取得できます。
次に例を示します。
TableAPI tableH = kvstore.getTableAPI(); Table myTable = tableH.getTable("myTable"); /* Create a primary key for user id 12345 and get a row */ PrimaryKey key = myTable.createPrimaryKey(); key.put("uid", 12345); Row row = tableH.get(key, null); EnumValue ev = row.get("testEnum").asEnum(); System.out.println("enum as string: " + ev.get()); // returns "Pears" System.out.println("enum index: " + ev.getIndex()); // returns '1'