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

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

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
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 创建表之前判断表是否存在,如果存在则删除已有表

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
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 定义主键 自增长,需要定义一个序列

1
2
3
4
5
6
7
create sequence seq_sys_area
minvalue 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   作为主键插入值

posted @   panie2015  阅读(74718)  评论(0编辑  收藏  举报
编辑推荐:
· AI与.NET技术实操系列(二):开始使用ML.NET
· 记一次.NET内存居高不下排查解决与启示
· 探究高空视频全景AR技术的实现原理
· 理解Rust引用及其生命周期标识(上)
· 浏览器原生「磁吸」效果!Anchor Positioning 锚点定位神器解析
阅读排行:
· DeepSeek 开源周回顾「GitHub 热点速览」
· 物流快递公司核心技术能力-地址解析分单基础技术分享
· .NET 10首个预览版发布:重大改进与新特性概览!
· AI与.NET技术实操系列(二):开始使用ML.NET
· 单线程的Redis速度为什么快?
点击右上角即可分享
微信分享提示