DB2 和 Informix 检测表是否存在
最近有某需求,需要检测数据库中表是否存在。然后又遇到 IBM 这个灾星了,跪服。
SQL 实现的标准要求数据库(DBMS)要有一个存放和管理数据库信息的库,例如 MySQL 的 information_schema
,那自然其它数据库也是有的。不过就是看究竟是哪一个了。
检测 DB2 中是否存在某表
select count(1) as exist from syscat.tables where tabname='表的名称';
返回0就表示没有,大于0(一般就是返回1)就表示表存在。
详细内容可以使用 select * from syscat.tables
查看。
检测 Informix 中是否存在某表
select count(1) as exist from systables where tabname='表的名称'
返回结果解释同 DB2。
详细内容可以使用 select * from systables
查看。
Java 案例
如果是程序执行,这里有简单的案例
// check if exist
String isExist = "select count(1) as exist from systables where tabname='" + tis.getTableName().trim() + "'";
ResultSet rs = statement.executeQuery(isExist);
while (rs.next())
{
int exist = rs.getInt(1);
LOGGER.debug("[Informix]检测表返回值为:" + exist);
if (exist > 0)
{
LOGGER.debug("[Informix]检测到目标表已存在");
}
}