水面-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で扱うことのできるデータベースファイルをアップロードしてください。
© 2010 [trans.blue factory] All rights reserved.