为什么这个SQL语句不能检查表是否存在有效?

时间:2014-04-14 20:32:52

标签: mysql sql

IF object_id('player_data', 'U') IS NOT NULL
  SELECT 'player_data exists' AS ''
ELSE
  SELECT 'player_data does not exist' AS ''

我有一个名为versusarenadata的数据库,一旦设置,它将包含一个名为player_data的表以及其他表。我需要在启动时检查数据库是否已经配置,所以我试图使用这个代码块,这显然只是为了测试,检查我是否可以继续读取数据或者我需要进行初始设置。为什么我收到错误消息:

  

“#1064 - 您的SQL语法出错”?

2 个答案:

答案 0 :(得分:1)

您可以查询information_schema.tables以查看当前数据库中是否存在具有该名称的表,如下所示:

select (case 
  when count(*) = 0 
  then 'player_data does not exist' 
  else 'player_data exists' 
  end)         
from information_schema.tables 
where table_schema = database()
and table_name = 'player_data';

或者你可以尝试使用create table if not exists创建表,如果表已经存在,它将不执行任何操作:

create table if not exists player_data
...

答案 1 :(得分:0)

我认为PRINT不是sql关键字。如果要在结果中打印字符串,则需要进行如下查询:

SELECT 'player data exists' as ''