1

MySql 5.5.x に次の DDL があります。

create table if not exists t1 (col1 int);

CREATE PROCEDURE my_proc()
BEGIN
      select inexistent_column from t1;       
END;

手順がエラーなしで作成されるのはなぜですか? inexistent_column が不明または存在しないことをスローすることを期待しています。MySql sql コンパイラにテーブル定義をチェックさせるにはどうすればよいですか?

更新: 言い換え

開発中、つまり新しい手順を作成しているときに、列のタイプミスを避ける方法が欲しいだけです。これを行う方法はありますか?たぶん、最初からそれを問うべきだったのだろう。

4

1 に答える 1

1

サーバーは構文チェックのみを行いますが、列の存在を自分でチェックできます。既存のすべてのテーブルと列は で定義されますinformation_schema

次のようなクエリを使用して、列が存在するかどうかを確認できます。

SELECT * 
FROM information_schema.COLUMNS 
WHERE 
    TABLE_SCHEMA = 'your_database_name' 
AND TABLE_NAME   = 'your_table_name' 
AND COLUMN_NAME  = 'some_column'
于 2012-11-09T21:45:52.997 に答える