一つ目の書き方は検索による更新といい、WHERE節が真に評価される全行の一つ以上の列を更新します。
二つ目の書き方は位置による更新といい、更新可能な開いたカーソルの現在行の一つ以上の列を更新します。カーソルを作成するSELECT文の
更新後の値にDEFAULTを指定すると、表にて定義された既定値に列の値が設定されます。
検索による更新の文は、更新しようとしている表や、そのコングロマリット(ヒープや索引などの記録単位)、その制約、WHERE節やSET式に書かれた表に依存します。検索による更新の準備された文の対象表にCREATE INDEXやDROP INDEX文、ALTER TABLE文が実行されると、その文は無効となります。
位置による更新の文はカーソルやカーソルが参照する全ての表に依存します。カーソルがまだ開いていなくとも、位置による更新の文をコンパイルすることができます。しかしながらJDBCのcloseメソッドにより開いたカーソルをなくすと、位置による更新の文は無効となります。
位置による更新の準備された文の対象表に、CREATE INDEXやDROP INDEX文、ALTER TABLE文が実行されると、その文は無効となります。
別名を破棄すると、その別名を使っている更新の準備された文は無効になります。
更新の対象表にてトリガの破棄や作成が行われると、更新の文は無効になります。