一、問題起因
在前幾天從同事那裡拿來demo研究的時候,發現資料庫名,部分表都一樣,只是有的表沒有,這時如果需要把兩個人的資料庫和成乙個資料庫,就需要處理判斷一張表不存在,如存在則不改動,若不存在,則執行建立。
在同事那裡拿到這個資料庫的轉存檔案,然後去手動改動這個.sql轉存檔案對一些自己不確定自己資料庫中是否存在的表,做如下示例處理
轉存sql檔案時,每個表的匯入都是如下建立方式,先判斷是否存在,若存在,則刪除這張表,重新建立,以下示例均為demo:
drop table if exists `student`;#判斷時候存在,若存在則執行刪除表操作
create table `student` (
`s_id` varchar(40) not null,
`s_name` varchar(255) default null,
`s_age` varchar(255) default null,
`s_msg` varchar(255) default null,
primary key (`s_id`)
) engine=innodb default charset=utf8;
-- ----------------------------
-- records of student
-- ----------------------------
insert into `student` values ('1', '早晨', '22', '電風扇');
insert into `student` values ('2', '春節', '32', '發電裝置v');
insert into `student` values ('3', '端午節', '33', '地方');
insert into `student` values ('4', '清明節', '44', 'dfs ');
insert into `student` values ('5', '聖誕節', '66', '的');
在匯入表時,不想刪除以前這張表中的資料,但希望允許轉存sql檔案中的資料新增時,做如下修改
create table if not exists `student` (#判斷這張表是否存在,若存在,則跳過建立表操作,
`s_id` varchar(40) not null,
`s_name` varchar(255) default null,
`s_age` varchar(255) default null,
`s_msg` varchar(255) default null,
primary key (`s_id`)) engine=innodb default charset=utf8;
insert into `student` values ('7', '重陽節', '33', '登高賞菊');
在執行新錶建立,特別是批量建立時,一定要先對錶的存在狀態做判斷,即使用if exists,不然一旦建立出錯,後面的語句將無法執行。
MyBatis 如果不存在則插入
依靠資料庫鎖是非常安全的方式,比方說,分布式定時任務,除了使用quartz不讓各個機器上同時跑乙個定時任務之外,最好在資料庫也加乙個保險。插入一條資料之前,判斷表中有沒有這條資料,如果沒有才插入,這樣就只會有一條資料插入成功。insert into inno index id,depart name...
ORACLE 如果表不存在,則建立該錶
oracle使用的是pl sql,不支援if not exists 條件,所以寫了個小例子。使用counter在user all tables中來列舉有幾個product表 如果i 0則說明至少有乙個product表。根據條件的判斷刪或增product表。declare i integer begi...
mysql判斷表不存在則建立
mysql判斷不存在時建立表或建立資料庫 建立資料庫 create database if not exists mydb character set utf8 建立資料表 create table if not exists world newtable id bigint 8 unsigned ...