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

  因为是从事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;

有问题欢迎留言讨论~



评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值