您的位置:首页 > 数据库

数据库添加新表时如何判断原来是否存在该表

2016-04-19 23:31 295 查看
  因为是从事javaweb开发工作,所以工作中经常需要编写数据库脚本,几天前碰到一个问题。在数据库中如何添加新表前判断之前是否存在该表。看似简单的问题,但是如果脚本写的不好,就会造成数据损失。

  工作中的数据库脚本一般需要支持重复执行,所以怎么判断是否存在同样名称的表呢?

   很多人会觉得,反正是新插入一个表,里面一般肯定是没有同样名字的表的。直接先删除同样名字的表,然后新增,就可以支持重复执行脚本了。

假如你要插入的表名为 name

  就会写 drop table  name if exists table name;

这样写的话,如果客户的数据库里面真的有这个表,那你的脚本就会删了客户的数据。造成不可估量的损失。我百度了一些网上的方法,发现找到的都执行不了。现在解决了。特此记录,方便其他人遇到这个情况该怎么合理的判断。

MySQL的写法:

 IF NOT EXISTS (SELECT * FROM information_schema.`TABLES`  WHERE  table_schema=databasename AND table_name='name')

then

CREATE TABLE  name(

........

)

COMMIT;

END IF;

Oracle 的写法:

declare

i number;

select count(*) into i from user_tables where table_name='name';

if i=0 

then

execute immediate'

create table name(

)‘

commit;

end if;

有问题欢迎留言讨论~
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  数据库