SQLのviewはupdate可能 joinやサブクリエリを使ったviewではエラーになる
  • facebookページ
  • twitterページ
  • 2020.06.30

    SQLのviewはupdate可能 joinやサブクリエリを使ったviewではエラーになる

    SQLのViewについてまとめています。

    MySQLのサンプルデータベースEmployeesを使用しています。

    SQLのviewは、viewに対して更新が可能

    シンプルなselect文で作成したviewはupdate文による更新が可能です。

    以下は、employees(社員)テーブルのemp_no(社員番号)、first_name(名)、last_name(姓)のみを使ったviewに対して、first_nameを更新するサンプルです。

    【関連記事】
    SQLのview作成 joinやサブクエリを使ったselectも使用可能

    ただし、単一テーブルの特定のカラムをselectするようなシンプルなviewでのみupdateが可能です。例えば、以下の様な場合は、update実行時にエラーとなります。

    joinを使ったviewに更新失敗

    employees(社員)テーブル、dept_emp(部署名・社員紐付け)テーブル、departments(部署)テーブルの3テーブルをjoinするviewに対してupdateを実行すると、同様にエラーになりました。

    こちらの場合は、The target table jointest of the UPDATE is not updatableと、対象テーブルがupdateできない旨のエラーが表示されました。

    サブクエリを使ったviewでupdate失敗

    社員番号12516に対してfirst_nameをupdateしようとしたところ、Incorrect date value: ‘1968’ for column ‘birth_date’エラーとなりました。

    view作成時に指定したselect文が複雑になると、予想外のエラーが表示されるようです。

    まとめ

    ポテパンダの一言メモ
    • viewに対するupdateは条件付きで可能
    • サブクエリやjoinを使った複雑なviewは、update発行時にエラーとなる
    • The target table jointest of the UPDATE is not updatable以外のエラーとなるケースもある


    優良フリーランス案件多数掲載中!
    フリーランスエンジニアの案件をお探しなら
    ポテパンフリーランス

    この記事をシェア

    • Facebookシェア
    • Twitterシェア
    • Hatenaシェア
    • Lineシェア
    pickup









    ABOUT US

    ポテパンはエンジニアと企業の最適なマッチングを追求する企業です。

    READ MORE