Oracle数据库可重复执行脚本整理方法

使用说明

  • 此模板适用于已经建好的数据库和表想导出重复执行的情况
  • 导出的时候建议不要使用Navicat工具,这样会导出很多无用的代码
  • 此模板包括序列、表结构、触发器、注释
  • 使用时替换标明eam_roleandmenu即可
  • 未完待续……
--创建序列eam_roleandmenu

DECLARE
    s_count   NUMBER;
BEGIN
    SELECT COUNT (1)
    INTO s_count
    FROM user_sequences
    WHERE sequence_name = UPPER ('seq_eam_roleandmenu');

    IF s_count = 0
    THEN
        EXECUTE IMMEDIATE '
               CREATE SEQUENCE seq_eam_roleandmenu
  INCREMENT BY 1
  START WITH 1
  MINVALUE 1
  MAXVALUE 99999999999
  NOCYCLE
  NOORDER
  NOCACHE
    ';
    END IF;
END;
/

-------创建eam_roleandmenu表

DECLARE
    s_count   NUMBER;
BEGIN
    SELECT COUNT (1)
    INTO s_count
    FROM user_tables
    WHERE table_name = UPPER ('eam_roleandmenu');

    IF s_count = 0
    THEN
        EXECUTE IMMEDIATE 'CREATE TABLE eam_roleandmenu
					(id                             NUMBER ,
					rolecode                       NUMBER NOT NULL,
					menuid                         VARCHAR2(8 BYTE) NOT NULL,
					empid                          NUMBER NOT NULL,
					dpid                           NUMBER NOT NULL,
					create_date                    DATE DEFAULT SYSDATE NOT NULL,
					update_date                    DATE DEFAULT SYSDATE NOT NULL)';
    END IF;
END;
/

-------创建eam_roleandmenu主键

DECLARE
    num   NUMBER;
BEGIN
    SELECT COUNT (1)
    INTO num
    FROM user_constraints a
    WHERE a.constraint_name = UPPER ('pk_eam_roleandmenu');

    IF num = 0
    THEN
        EXECUTE IMMEDIATE 'ALTER TABLE eam_roleandmenu
ADD CONSTRAINT pk_eam_roleandmenu PRIMARY KEY (id)
USING INDEX';
    END IF;
END;
/

-------创建eam_class_style触发器

CREATE OR REPLACE TRIGGER trg_eam_roleandmenu
    BEFORE INSERT
    ON eam_roleandmenu
    REFERENCING NEW AS new OLD AS old
    FOR EACH ROW
DECLARE
    integrity_error   EXCEPTION;
    errno             INTEGER;
    errmsg            CHAR (200);
BEGIN
    IF :new.id IS NULL OR :new.id <= 0
    THEN
        SELECT seq_eam_roleandmenu.NEXTVAL INTO :new.id FROM DUAL;
    END IF;
--  Errors handling
EXCEPTION
    WHEN integrity_error
    THEN
        raise_application_error (errno, errmsg);
END;
/

-- Comments for eam_roleandmenu
COMMENT ON TABLE eam_roleandmenu IS '角色菜单表'
/
COMMENT ON COLUMN eam_roleandmenu.create_date IS '创建时间'
/
COMMENT ON COLUMN eam_roleandmenu.dpid IS '客户代码'
/
COMMENT ON COLUMN eam_roleandmenu.empid IS '职员ID'
/
COMMENT ON COLUMN eam_roleandmenu.id IS '编号,自动增长'
/
COMMENT ON COLUMN eam_roleandmenu.menuid IS '菜单ID'
/
COMMENT ON COLUMN eam_roleandmenu.rolecode IS '角色code'
/
COMMENT ON COLUMN eam_roleandmenu.update_date IS '更新时间'
/

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值