水面-MINAMO- ご利用にあたっての注意点

データシートでの行/列編集制限

「水面-MINAMO-」では、様々なSELECT文による抽出結果に対して、データの更新ができるように作られています。「select * fromテーブル名」といった単一テーブルに対するSELECT文はもちろん、「select a.col1,a.col2,b.con3 from tbl1 a inner join tbl2 b using(col)」のような結合SELECT文や、「select col1 + col2, col3, col4 from tbl1」といった関数などを含んだSELECT文の抽出結果に対しても、データの挿入や更新を行うことができます。

しかし一部の結果に対しては、行追加/削除が行えなかったり、列値を修正できないよう制限をかけています。行/列値に対する編集制限事項を以下に記します。

関数列

AVGやCASE文など、関数を使用した列には値の更新を行うことはできません。また、col1 + col2のような演算子を使用した列に対しても、更新することはできません。

サブクエリーテーブルの列

FROM句の中でSELECT文を記述し、テーブルのように見せた「サブクエリーテーブル」の列には、値を更新することはできません。例えば、

SELECT a.col1, b.col2 FROM tbl1 a, (SELECT col2 FROM tbl2 WHERE col10 > 100) b

というSQLの場合、col1に対しては値を更新することはできますが、col2に対しては値を更新することはできません。

同一名列

SELECT句に同一名の列が存在する場合、その列に対して値を更新することはできません。もし同一名列をもつテーブルを結合して編集を行いたい場合、対象列に対して別々の別名を指定すれば可能です。

UNIONを使用した抽出

UNIONを利用したSELECT文による抽出結果は、すべての列に対して値を更新することはできません。

SQLの実行

抽出(SELECT)の1文制限

SELECT文はiPhone/iPod touchへの負荷を抑えるため、複数のSELECT文が入力されていても先頭の1文のみ実行されます。DMLやDDLと一緒にSELECT文が入力されていた場合は、先にDML/DDLが全て実行され、それらが正常終了した場合は最後にSELECT文が実行されます。

複数DML/DDLの実行

複数のDMLやDDLを実行されることを前提に設計されていますが、大量のDML/DDLを実行された場合、iPhone/iPod touchの処理が著しく低下する恐れがあります。一度に複数のDML/DDLを実行する場合は十分注意してください。

コミットのタイミング

SQLを実行するときは自動コミットモードとなります。複数DML/DDLを実行し、途中でエラーが発生するSQLが存在しても、それまでに実行されたSQL文はコミット済みとなります。

複数テーブル抽出の「*」使用

例えば「SELECT * FROM tbl1, tbl2」のように、複数テーブルの列を「*」抽出した場合、その抽出結果すべての列に対して、値を更新することはできません。

利用データベース

「水面-MINAMO-」では、SQLite3.6を使用してSQL実行などのデータベースの操作を行っています。ファイル管理でデータベースファイルをiPhoneやiPod touchにアップロードする場合は、SQLite3.6で作成されたファイル、またはSQLite3.6で扱うことのできるデータベースファイルをアップロードしてください。