XDM/SDのデータベースにアクセスする場合,アクセスできるテーブルやレコードに幾つかの制限があります。ここでは,データ操作ごとの制限について説明します。
以降の説明で使うXDM/SDのレコードの内容,ACE3のテーブル定義を次に示します。
次のテーブルのレコードを検索できます。
RDML文のSELECT文で,WHERE句を指定して検索した場合,WHERE句に指定した検索条件に該当するデータを取得できます。
WHERE句を指定しない場合,SELECT文で指定したフィールド名のすべてのデータが取得されます。
SELECT A1,B2,B3 FROM OWNER_MEMBER_TABLE WHERE A1=1 AND B2='A'
次のテーブルのレコードを追加できます。
親レコード型だけで定義したテーブルにレコードを挿入した場合,XDM/SD上には子レコードを持たない親レコードが追加されます。
INSERT INTO OWNER_TABLE VALUES(4,'え','ニ')
親レコード型と子レコード型を用いて定義したテーブルにレコードを追加する場合は,テーブルに定義した親レコード型の構成要素が,テーブル定義時にプライマリカラムとしたテーブルであることが必要です。
親レコード型と子レコード型を用いて定義したテーブルにレコードを追加すると,INSERT文のVALUES句に指定された挿入値をデータとする親レコードと,親子関係を持つ子レコードが追加されます。
ただし,親レコードはプライマリカラムのため,親レコードに重複するレコードは追加できません。
INSERT INTO OWNER_MEMBER_TABLE(A1,B2,B3) VALUES(4,'D',109)
他のレコードと親子関係を持たないレコード型で定義したテーブルにレコードを追加する場合,XDM/SD上ではINSERT文のVALUES句に指定された挿入値をデータとするレコードが追加されます。
レコードを追加したとき,データを入力しないフィールドには省略時の設定値が入ります。テーブルの定義にないXDM/SDのレコード型の項目にも省略時の設定値が適用されます。
例えば,親レコード型のA1,A2で定義したテーブルにINSERT文でレコードを追加した場合,追加した親レコードのA3に ’’(空白)が入ります。
省略時の設定値についてはマニュアル「XDM E2系 システム定義」を参照してください。
次のテーブルのレコードを削除できます。
親レコードだけで定義したテーブルのレコードを削除した場合,XDM/SD上では削除した親レコードと親子関係にあった子レコードの動作はスキーマ定義の保存モードの指定に従います。
保存モードについてはマニュアル「XDM E2系 解説」を参照してください。
DELETE FROM OWNER_TABLE WHERE A1=3
子レコード型だけで定義したテーブルのレコードを削除した場合,一つの子レコードを削除するとその子レコードだけ削除され,親レコードは削除されません。
親レコードに属する子レコードをすべて削除しても,親レコードは削除されません。
DELETE FROM MEMBER_TABLE WHERE B2='A' OR B2='AA' OR B2='AAA'
他のレコードと親子関係を持たないレコード型で定義したテーブルのレコードを削除した場合,XDM/SD上でも該当するレコードが削除されます。
次のテーブルのレコードを更新できます。
親レコード型だけで定義したテーブルの値を更新した場合,XDM/SD上では該当する親レコードのデータが更新されます。
ただし,CALCキー,シーケンシャルインデックスや子レコードがある場合の接続キーなどの変更はできません。
UPDATE OWNER_TABLE SET A2='ア' WHERE A2='あ'
子レコード型だけで定義したテーブルの値を更新した場合,XDM/SD上では該当する子レコードのデータが更新されます。
UPDATE MEMBER_TABLE SET B2='α' WHERE B2='A'
親レコード型と子レコード型を用いて定義したテーブルのレコードを更新する場合は,テーブルに定義した親レコード型の構成要素が,テーブル定義時にプライマリカラムとしたテーブルである必要があります。この場合,子レコードの値を更新できます。
プライマリカラムである構成要素は値を更新できないので,親レコードの値は更新できません。
UPDATE OWNER_MEMBER_TABLE SET B2='α' WHERE A1=1 AND B3=100
他のレコードと親子関係を持たないレコード型で定義したテーブルの値を更新した場合,XDM/SD上では該当するデータが更新されます。