您的当前位置:首页正文

oracle创建表之前判断表是否存在,如果存在则删除已有表

2020-07-08 来源:步旅网
oracle创建表之前判断表是否存在,如果存在则删除已有表

Mysql 创建表之前判断表是否存在,如果存在则删除已有表

DROP TABLE IF EXISTS sys_area;

CREATE TABLE sys_area(

id int NOT NULL AUTO_INCREMENT COMMENT '编号', parent_id varchar(64) NOT NULL COMMENT '⽗级编号',

parent_ids varchar(2000) NOT NULL COMMENT '所有⽗级编号', name varchar(100) NOT NULL COMMENT '名称', sort decimal(10,0) NOT NULL COMMENT '排序', code varchar(100) COMMENT '区域编码', type char(1) COMMENT '区域类型',

create_by varchar(64) NOT NULL COMMENT '创建者', create_date datetime NOT NULL COMMENT '创建时间', update_by varchar(64) NOT NULL COMMENT '更新者', update_date datetime NOT NULL COMMENT '更新时间', remarks varchar(255) COMMENT '备注信息',

del_flag char(1) DEFAULT '0' NOT NULL COMMENT '删除标记', PRIMARY KEY (id)) COMMENT = '区域表';

  MySql ⾃增长 AUTO_INCREMENT

Oracle 创建表之前判断表是否存在,如果存在则删除已有表

declare

num number;begin

select count(1) into num from user_tables where table_name = upper('sys_area') ; if num > 0 then

execute immediate 'drop table sys_area' ; end if; end;

-- 区域表

CREATE TABLE sys_area(

id Number(4) NOT NULL,

parent_id varchar2(64) NOT NULL, parent_ids varchar2(2000) NOT NULL, name nvarchar2(100) NOT NULL, sort number(10,0) NOT NULL, code varchar2(100), type char(1),

create_by varchar2(64) NOT NULL, create_date timestamp NOT NULL, update_by varchar2(64) NOT NULL, update_date timestamp NOT NULL, remarks nvarchar2(255),

del_flag char(1) DEFAULT '0' NOT NULL, PRIMARY KEY (id));

 

Oracle 定义主键 ⾃增长,需要定义⼀个序列

create sequence seq_sys_areaminvalue 1 --最⼩值

nomaxvalue --不设置最⼤值start with 1 --从1开始计数increment by 1 --每次加1个

nocycle --⼀直累加,不循环nocache; --不建缓冲区

以上代码完成了⼀个序列(sequence)的建⽴过程,名称为SEQ_TEST,范围是从1开始到⽆限⼤(⽆限⼤的程度是由你机器决定的),nocycle 是决定不循环,如果你设置了最⼤值那么你可以⽤cycle 会使seq到最⼤之后循环.对于nocache顺便说⼀下如果你给出了cache值那么系统将⾃动读取你的cache值⼤⼩个seq,这样在反复操作时会加快运⾏速度,但如果遭遇意外情况如当机了或oracle死了,则下次取出的seq值将和上次的不连贯.(如果连不连贯⽆所谓建议⽤cache,因为时间就是⾦钱呀!)  seq_sys_area.nextval 作为主键插⼊值

因篇幅问题不能全部显示,请点此查看更多更全内容