精华内容
下载资源
问答
  • <param name="sequdence">'A'||lpad(user_no.nextval,5,0) 主键由字符串加序列构成比如'A00001',配置文件怎写序列呢?
  • oracle主键生成策略

    千次阅读 2018-07-11 11:07:04
    创建序列   创建序列  语法 CREATE SEQUENCE 序列名 [相关参数] 参数说明 INCREMENT BY :序列变化的步进,负值表示递减。(默认1) START WITH:序列的初始值 。(默认1) MAXvalue:序列可生成的最大值。...

    创建序列

     

    • 创建序列 
      • 语法 CREATE SEQUENCE 序列名 [相关参数]
      • 参数说明 
        INCREMENT BY :序列变化的步进,负值表示递减。(默认1) 
        START WITH:序列的初始值 。(默认1) 
        MAXvalue:序列可生成的最大值。(默认不限制最大值,NOMAXVALUE) 
        MINVALUE:序列可生成的最小值。(默认不限制最小值,NOMINVALUE) 
        CYCLE:用于定义当序列产生的值达到限制值后是否循环(NOCYCLE:不循环,CYCLE:循环)。 
        CACHE:表示缓存序列的个数,数据库异常终止可能会导致序列中断不连续的情况,默认值为20,如果不使用缓存可设置NOCACHE
      • 例 
        CREATE SEQUENCE SEQ_DEMO 
        INCREMENT BY 1 
        START WITH 1 
        NOMAXvalue 
        NOCYCLE 
        NOCACHE;

    • 修改、删除序列 
      • 使用 alter 命令进行修改
      • 使用 drop 命令删除

    例子:

    CREATE SEQUENCE SEQ_AREA_ROUTE_CONFIG_ID  --序列名
    INCREMENT BY 1   -- 每次加几个  
    START WITH 1       -- 从1开始计数  
    NOMAXVALUE        -- 不设置最大值  
    NOCYCLE               -- 一直累加,不循环  

    CACHE 10;

    创建一个序列,每次插入之前查询得到当前序列最大值

    展开全文
  • Oracle建表主键策略

    2014-07-20 12:01:53
    oracle建表设置主键自增   首先创建一张表   ? 1 2 3 4 5 6 create table member( memberId number primary key, memberMail varchar2...

    1.Seq自增策略

    Oracle创建表和主键自增

      创建表:

      create table tuser(

      id number(11) not null,

      name varchar2(20) not null,

      password varchar2(20)

      birthday date,

      constraint tuser_pk primary key (id)

      );

      创建序列:

      create sequence increase_seq increment by 1 start with 1 nomaxvalue 

    nocycle cache 10;

      创建trigger

      create or replace trigger tuser_trigger

      before insert on tuser for each row

      begin

      select increase_seq.nextval into :new.id from dual;

      end;

      /

      根据使用的工具,可能需要增加“/”来执行PL/SQL块。

      测试:

      insert into tuser(name,password,birthday) values('wujay','123456',null);

      commit;

      select * from tuser;

      ID NAME PASSWORD BIRTHDAY

      ---------- -------------------- -------------------- --------------

      1 wujay 123456

      修改表:

      alter table tuser rename column id to pk_tuser;


    2.UUID策略

    1、创建表:

    create table table1(
      id       VARCHAR2(32) default SYS_GUID() not null;

      name     VARCHAR2(32);

    )

    2、插入数据

    insert into table1(ID)values(SYS_GUID(),"小王"); 
    commit;

    3、查询数据

    select * from table1;

     

    注:此方法也适用于存储过程,将SYS_GUID()保存为变量,可以作为查询条件使用。

     

    create or replace procedure pro is
    v_name varchar2(32);
    v_uuid varchar2(32);
    begin
            v_uuid := SYS_GUID(); 
            insert into table1(ID)values(SYS_GUID(),"小王");  
            commit;

            select name into v_name from table1 where id=v_uuid;

            dbms_output.put_line(v_name);

    end pro;




    展开全文
  • oracle主键自增长策略

    2015-02-04 22:13:15
    和mysql不同的是oracle主键如果为number类型,并没有自增长的选项,但oracle也提供自增长的实现方式。 使用如下sql: CREATE SEQUENCE ID_USERCOPY MINVALUE 1 MAXVALUE 99999999 START WITH 1 INCREMENT...

    和mysql不同的是oracle的主键如果为number类型,并没有自增长的选项,但oracle也提供自增长的实现方式。

    使用如下sql:

    	CREATE SEQUENCE  ID_USERCOPY
    	MINVALUE 1
    	MAXVALUE 99999999
    	START WITH 1
    	INCREMENT BY 1
    	NOCACHE;
    使用如上SQL即可为表user_copy创建id自增。

    在hibernate的dao中做如下设置,插入数据即可。


    @Entity(name = "user_copy")//表名
    @SequenceGenerator(name="ID_USERCOPY",sequenceName="ID_USERCOPY", allocationSize=1) 
    public class User {
    	@Id
    	@GeneratedValue(strategy = GenerationType.SEQUENCE,generator="ID_USERCOPY")  //主键增长策略
    	 private Integer id;
    	 private String username;
    	 private String password;
    	 private String nickname;
    .......

    自己在学hibernate,记下笔记。


    展开全文
  • hibernate 配置Oracle主键生成策略

    千次阅读 2012-12-28 10:02:16
    载:使用JPA生成实体类后,主键每次插入,数量按50递增,数据库:oracle主键递增方式:sequence 博客分类: JAVA   作者: ghl116   Java Persistence API 简称JPA,它是作为EJB3.0规范( )中的附加持久规范而...
    	@Id
    	@Column(name="[id]")
    	@GeneratedValue(strategy = GenerationType.SEQUENCE,generator="seqhilo")
    	@SequenceGenerator(sequenceName="userInfo_sequence", name = "seqhilo",allocationSize=1)
    	private long id;
    sequenceName="userInfo_sequence"

    制定Oracle中的生成序列

    以下是有可能出现的问题

    作者:ghl116

     

    Java Persistence API 简称JPA,它是作为EJB3.0规范( )中的附加持久规范而被开发出来。Hibernate3也使用JPA Annotation来替代以前hbm配置文件,在新项目使用了一下,感觉非常方便。但这几天出现了一个奇怪的问题。
    @Entity()
    @Table(name = "user_score_history")
    public class UserScoreHistoryVO implements Serializable {
    private int id;
    private int userId;
    private int scoreChange;
    private int levelChange;
    private String changeReason;
    private String parameters;
    private Timestamp createTime;

    @Id
    @SequenceGenerator(name="seq_user_score_history_id",sequenceName = "seq_user_score_history_id")
    @GeneratedValue(strategy = GenerationType.SEQUENCE,generator = "seq_user_score_history_id")
    public int getId() {
    return id;
    }
    ...
    }
    但是每次保存新对象时都发现id都不对,与定义的sequence不一致,每一次都起始的id值都是50的倍数,而日志里看插入时也有调用sequence的sql语句。到网上查了一下,也没有结果。郁闷!看到一个对JPA的介绍
    @SequenceGenerator如果使用 批注指定一个 SEQUENCE 类型的主键生成器,则可以使用 @SequenceGenerator 批注微调该主键生成器以:
    更改分配大小以匹配应用程序要求或数据库性能参数
    更改初始值以匹配现有的数据模型(例如,如果基于已经为其分配或保留了一组主键值的现有数据集构建)
    使用现有数据模型中预定义的序列
    列出了此批注的属性。有关更多详细信息,请参阅 。有关更多详细信息,请参阅 。
    表 1-42 @SequenceGenerator 属性
    属性必需说明name


    SequenceGenerator 的名称必须匹配其 startegy 设置为 SEQUENCE 的 GeneratedValue 的名称。
    allocationSize


    默认值: 50.
    默认情况下,JPA 持续性提供程序使用的分配大小为 50。
    如果此分配大小与应用程序要求或数据库性能参数不匹配,请将 allocationSize 设置为所需的 int 值。
    initialValue


    默认值: 0.
    默认情况下,JPA 持续性提供程序假设持续性提供程序将所有主键值的起始值设置为 0。
    如果这与现有数据模型不匹配,请将 initialValue 设置为所需的 int 值。
    sequenceName


    默认值:JPA 持续性提供程序分配它自己创建的序列名。
    如果要使用事先存在或预定义的序列,请将 sequenceName 设置为所需的 String 名称。

    allocationSize默认值: 50???是不是这个,试着把allocationSize = 1加入@SequenceGenerator,果然就对了。
    唉,这个世界连sun都不能相信了,还能相信谁啊!


    (个人微信号)  (技术公众号)

    展开全文
  • 有两种方法可以设置主键,一种是自增长主键,另一种就是生成唯一序列。 一、自增长主键 --首先建一个表TEST create table TEST (  NID int PRIMARY KEY,  test1 varchar2(20),  test2 varchar2(20),  ...
  • hibernate.dialect=org.hibernate...oracle本身是没有自增主键这个东西,但是我通过增加触发器和sequence配合来模拟了自增主键。 所以希望在hibernate也可以采用Identity的方式。 大家有什么办法能突破这个约束吗?
  • 另外如果之前在库表设置了触发器和sequence,那么即使是采用uuid主键生成策略,那么hibernate在做插入时,uuid将会失效,而是采用sequence中的值作为主键id。相当于先用uuid做主键id,但是在插入之前又被sequence中...
  • 另外如果之前在库表设置了触发器和sequence,那么即使是采用uuid主键生成策略,那么hibernate在做插入时,uuid将会失效,而是采用sequence中的值作为主键id。相当于先用uuid做主键id,但是在插入之前又被sequence中...
  • @Id @Column(name="channel_id",nullable = false) @TableGenerator(name="channelId",allocationSize=1) @GeneratedValue(strategy=GenerationType.TABLE, generator="channelId") public Intege
  • Oracle主键自增实现

    千次阅读 2020-08-21 14:56:55
    Oracle中使没有主键自增的,要实现主键的自增,需要通过序列来实现。案例以springboot为环境 建表、建序列 需要注意的是,在Id需要为number类型 --创建表,表名以及字段名都要大写 CREATE TABLE "TB_USER" ( "ID" ...
  • 一直用Hibernate+mysql,感觉Hibernate很好用,...于是就开始紧罗密布的测试了,问题自然一大堆,现在说一个关于主键生成策略的问题。 首先,众所周知,Hibernate可以自动建表。当我们把项目部署好,运行的时候发现...
  • oracle中,主键生成策略: assigned--手动插入 native--在oracle中默认去找“hibernate-sequence”序列 sequence--序列 identity--自增(占资源)
  • hibernate oracle主键自增长采用oracle的序列去处理,首先要创建自增长序列值,1.create sequence my_seq_id minvalue 1 start with 1 increment by 12.在javabean中设置主键增长策略@Id @GeneratedValue(strategy=...
  • oracle主键自增的方式1、sequence自增的方式2、使用触发器方式自增 1、sequence自增的方式 首先创建一张表 -- Create table create table LE_USER ( user_id NUMBER(9) not null, user_name VARCHAR2(20) not ...
  • 今天在开发中遇到了一个问题,关于Oracle主键生成机制,后来在查过多方资料后总结了点小经验,若有不对的地方请多多关照。  假如你的业务不需要跨数据库的话Oracle主键可以用sequence,但是假如你有很多的表都用到...
  • oracle本身不支持主键自增长,可以用序列sequence...在Hibernate中,oracle主键自增长有两种方式: 1.使用序列 在映射文件中 hbm_test_id_seq 执行结果 Hibernate: select hbm_test_id_seq.nextval from dual
  • 方法一:序列 第一步创建序列: CREATE SEQUENCE topic_sequence INCREMENT BY 1 START WITH 1 NOMAXVALUE nocycle nocache 第
  • 文章目录前言一、Oracle 主键 Sequence实现步骤一、Idea 快速开发插件 前言 MySQL: 支持主键自增。 IdType.Auto Oracle: 序列(Sequence) 一、Oracle 主键 Sequence实现步骤 实体类配置主键 Sequence @KeySequence...
  • 一、自增主键生成 1.MySQL数据库 使用MyBatis往MySQL数据库中插入一条记录后,成功则返回1,即成功的条数。如果要返回该条记录的自增主键值,在mapper中指定keyProperty属性,例如: (1) <insert id="insert" ...
  • 在hibernate中实现oracle主键自增策略 分类: DataBase 2009-05-08 22:04 1623人阅读 评论(4) 收藏 举报  在很多情况下,我们使用Hibernate在已经建立好数据库的基础上。在oracle中,如

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 28,812
精华内容 11,524
关键字:

oracle主键策略