法人のお客様向け・東京から全国オンライン対応

AIが生成したSQLをそのまま実行して大丈夫?業務システムへ組み込む際の注意点

AIが生成したSQLを人が確認し、安全な処理だけをデータベースへ渡すイラスト

AIが生成したSQLを業務システムで使う際の注意点

生成AIを利用すると、自然言語による指示からSQLを短時間で作成できます。しかし、生成されたSQLが正しいとは限りません。

特に業務システムで使用する場合、SQLが一見正しく見えても、意図しないデータの更新や削除、存在しないテーブルの参照などが含まれている可能性があります。

ここでは、弊社がAIを利用した開発や改修を行うなかで、特に重要だと感じている注意点をご紹介します。

1.更新系SQLをそのまま実行しない

AIが生成したSQLを、内容を確認せずに業務データへ実行するのは危険です。

例えば、生成されたSQLに意図しない処理が含まれていた場合、次のような問題が発生する可能性があります。

  • DELETEによって必要なデータが削除される
  • UPDATEによって既存データが意図しない内容へ変更される
  • INSERTによって不要なデータや重複データが追加される
  • DROP TABLEによってテーブル自体が削除される
  • ALTER TABLEによってテーブル構造が変更される

さらに、WHERE句の条件が不足しているだけでも、対象外のデータまで一括して更新・削除される恐れがあります。

AIにSQLを生成させた場合は、必ず技術者が内容を確認し、どのテーブルの、どのレコードに、どのような変更が行われるのかを確認する必要があります。

最初から本番環境で更新処理を行うのではなく、まずはSELECT文による参照処理から検証することをおすすめします。更新処理が必要な場合も、本番データのコピーや検証環境を使用し、事前にバックアップを取得したうえでテストします。

2.AIへ渡すテーブル定義を明確にする

正しいSQLを生成してもらうためには、AIに対して、データベースの構造を正確に伝える必要があります。

少なくとも、次の情報を提示します。

  • 使用するテーブル名
  • 各テーブルの項目名
  • 項目のデータ型
  • 主キー
  • テーブル同士を関連付ける項目
  • 取得したい結果と抽出条件
  • 使用しているデータベースの種類

特に、Access SQLとSQL Server、MySQLなどでは、使用できる関数やSQLの書き方に違いがあります。そのため、「Microsoft Accessで実行するSQLである」と明確に指定することも重要です。

どのデータがどのテーブルに保存されているのか、どのテーブルを参照すべきなのかを整理せずに依頼すると、AIは不足している情報を推測してSQLを作成することがあります。

3.存在しないテーブル名や項目名に注意する

ChatGPTなどの対話型AIにSQLを生成させると、実際には存在しないテーブル名や項目名を、もっともらしく作り出すことがあります。これは一般に「ハルシネーション」と呼ばれる現象です。

SQLの構文自体が正しくても、存在しないテーブルや項目が指定されていれば、そのまま実行することはできません。

また、名称が似ている別の項目を参照してしまうと、SQLはエラーにならず実行できても、誤った結果が返される場合があります。

AIが生成したSQLについては、次の内容を実際のデータベースと照合します。

  • テーブルが実在するか
  • 項目が実在するか
  • 参照している項目が目的に合っているか
  • テーブル間の結合条件が正しいか
  • 抽出条件が業務上の意味と一致しているか

4.弊社で確認した「一見動いているが、データが残らない」事例

弊社がAIを使用して開発されたアプリケーションを確認した際、不要な一時テーブルが作成されていた事例がありました。

そのアプリケーションでは、一時的な処理結果を保存するためのテーブルを作成し、そこへデータを蓄積する構造になっていました。しかし、アプリケーションを起動するたびに、そのテーブルを削除して再作成する処理も組み込まれていました。

画面上では正常に動いているように見えましたが、本来継続して保存されるべきデータまで、次回起動時に失われる状態になっていました。

このような問題は、アプリケーションを一度動かしただけでは気づきにくいものです。保存後にアプリケーションを終了し、再起動した後もデータが残っているかまで確認する必要があります。

AIが生成したコードでは、「その場で動作すること」と「業務システムとして継続的に正しく動作すること」は同じではありません。

AIが生成したSQLにも技術者による確認が必要

生成AIは、SQL作成の時間を短縮する有用な道具です。しかし、業務データの意味や、どのデータを将来まで保存すべきかを、AIが完全に理解しているわけではありません。

そのため、生成されたSQLについては、構文だけでなく、データの保存方法や業務上の意味まで含めて確認する必要があります。

AIにSQLを作らせることはできます。しかし、そのSQLを業務システムで安全に使える状態へ整えるには、データベースと業務の両方を理解した技術者による確認が欠かせません。

Microsoft Accessと生成AIを連携し、自然言語からSQLを生成する具体的な仕組みについては、 MS Access × 生成AI|自然言語からSQLを自動生成する方法 で紹介しています。


AIが生成したSQLやアプリの動作に不安がある方へ

AIが生成したSQLやコードについて、「一応動いているが、このまま業務で使ってよいのか分からない」 「データが消えないか心配」「作成者以外が直せない」といったご相談に対応しています。

既存のシステムをすぐに作り直すのではなく、現在の構成やデータを確認し、 できるだけ既存資産を活かしながら、安全に使い続けられる方法を一緒に検討します。

この記事の執筆・監修

株式会社シーケンス

業務システムの開発・改修・保守に約20年携わる技術者が、実際の開発・運用経験をもとに執筆しています。既存システムを安易に作り直すのではなく、現在の資産を活かしながら、安全に使い続けられる方法をご提案します。

AIで作ったアプリや社内システムの不具合、改修、引き継ぎについてお気軽にご相談ください。

AIで作ったアプリ・業務システムについて相談する