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 回答