zoukankan      html  css  js  c++  java
  • oracle 主键生成策略-sequence序列+trigger触发器

    oracle中设置表的主键字段为自增序列(实例)
    1、首先创建一个表(如日志表)

    //删除库表中存在的日志表
    drop table S_LOG_INFO cascade constraints;
    //新建日志表
    create table S_LOG_INFO
    (
    PRIMARYKEY NUMBER not null,//主键
    USERACCOUNT VARCHAR2(50),//操作用户账号
    USERNAME VARCHAR2(100),//操作用户
    OPERATIONTIME DATE,//操作时间
    LOGTYPE VARCHAR2(100),//日志类型
    SYSTEMTYPE VARCHAR2(500),//系统类型
    MODUAL VARCHAR2(100),//功能模块
    FUN VARCHAR2(50),//功能方法
    CONTENT VARCHAR2(500),//操作说明
    LOGSTATUS VARCHAR2(50),//操作结果
    constraint PK_S_LOG_INFO primary key (PRIMARYKEY)
    );
    2、创建主键序列

    /*创建自增序列*/
    CREATE SEQUENCE S_LOG_INFO_PRIMARYKEY_SEQUENCE
    MINVALUE 1 --最小值
    NOMAXVALUE --不设置最大值
    START WITH 1 --从1开始计数
    INCREMENT BY 1 --每次加1
    NOCYCLE --一直累加,不循环
    NOCACHE; --不建缓冲区
    3、创建触发器实现数据插入时触发主键自动增长

    CREATE OR REPLACE TRIGGER S_LOG_INFO_TRIGGER BEFORE INSERT ON S_LOG_INFO FOR EACH ROW WHEN(NEW.PRIMARYKEY IS NULL)
    BEGIN
    SELECT S_LOG_INFO_PRIMARYKEY_SEQUENCE.NEXTVAL INTO:NEW.PRIMARYKEY FROM dual;
    END;
    4、测试,添加数据

    INSERT
    INTO
    S_LOG_INFO
    (LOGSTATUS, USERACCOUNT, LOGTYPE, SYSTEMTYPE, CONTENT, FUN, USERNAME, MODUAL)
    VALUES
    ('成功','123','系统日志', 'XXXXXXX', '用户成功注销', 'doLogout', 'admin','系统注销')

    ————————————————
    版权声明:本文为CSDN博主「逆之雪」的原创文章,遵循CC 4.0 by-sa版权协议,转载请附上原文出处链接及本声明。
    原文链接:https://blog.csdn.net/qq_31811587/article/details/81128498

  • 相关阅读:
    archlinux .bash_history
    Ubuntu环境下挂载新硬盘
    软碟通 UltraISO U启替代品 Win32DiskImager 无设备 无盘符 无u盘 无优盘 解决方案 之diskpart
    delphi Integer overflow
    MSBuild Tools offline
    delphi synedit免费的拼写检查器dll
    git 自定义命令行
    lua编译
    gcc ar
    Windows Subsystem for Linux (WSL)挂载移动硬盘U盘 卸载 c d 盘
  • 原文地址:https://www.cnblogs.com/lxy061654/p/11371408.html
Copyright © 2011-2022 走看看