当前位置:   article > 正文

Oracle序列相关命令_oracel查询表使用的序列

oracel查询表使用的序列

1、Oracle创建序列命令

	CREATE SEQUENCE SEQ_ID_XXXXXX			-- 序列名称
	INCREMENT BY 1							-- 从1开始
	MINVALUE 0
	MAXVALUE 999999999999999999
	START WITH 1
	CACHE 20;
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6

2、Oracle序列查询命令

	
	// 查询一个新的序列值
	SELECT SEQ_ID_XXXXXX.NEXTVAL FROM DUAL;
			 
	// 查询当前序列的值
	SELECT SEQ_ID_XXXXXX.CURRVAL FROM DUAL;

  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7

3、Oracle序列删除命令

	
	// 删除序列命令
	DROP SEQUENCE SEQ_ID_XXXXXX;	-- 语法:DROP 序列名
	
  • 1
  • 2
  • 3
  • 4

4、Oracle序列实际应用

	
	// 使用方法一,查询序列
	<insert id="addLookRecord" parameterType="com.haha.business.look.TLookRecord">
        <selectKey keyProperty="id" resultType="long" order="BEFORE" >
            SELECT SEQ_ID_XXXXXX.NEXTVAL FROM DUAL
        </selectKey>
        INSERT INTO T_LOOK_RECORD(ID,UID,NAME,CREATE_TIME) VALUES(#{id,jdbcType=BIGINT},#{uid,jdbcType=VARCHAR},#{name,jdbcType=VARCHAR},SYSDATE)
    </insert>



	// 使用方法二,创建function,在function中获取seqId,如下:
	<insert id="addLookRecord" parameterType="com.haha.business.look.TLookRecord">
        INSERT INTO T_LOOK_RECORD(ID,UID,NAME,CREATE_TIME) VALUES(FUNC_NEXTID('T_LOOK_RECORD'),#{uid,jdbcType=VARCHAR},#{name,jdbcType=VARCHAR},SYSDATE)
    </insert>

	// 创建一个FUNCTION,需执行存储过程
	CREATE OR REPLACE FUNCTION FUNC_NEXTID(v_seq_id varchar2)
	RETURN NUMBER IS
		V_RESULT_NUM NUMBER;
	BEGIN
		SELECT SEQ_ID_XXXXXX.NEXTVAL INTO V_RESULT_NUM FROM DUAL;
		RETURN(V_RESULT_NUM) ;	
	END FUNC_NEXTID;


  • 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

5、注意事项

1、序列是有用户之分的,创建序列时,需要到执行的用户下去执行创建序列的命令。
2、CURRVAL返回当前SEQUENCE的值,首次需要执行NEXTVAL,初始化后才可以使用CURRVAL。
3、执行NEXTVAL之后的NEXTVAL会自动增加创建序列时定义的INCREMENT BY值。
4、若是返回的NEXTVAL不是连续的,可以检查下是否是代码中有其他地方使用NEXTVAL。
5、在Oracle数据库中,序列(Sequence)与表没有直接关联。序列是一个独立的数据库对象,它生成一个唯一的数值序列。这些序列通常用于填充主键列或进行计数操作。
6、虽然序列可以与表的主键列相关联,但它们并不是直接关联的。通常,通过创建一个序列和一个触发器,可以实现在插入数据时自动填充表的主键列。这种情况下,序列用于生成唯一的序列号,而触发器用于在插入数据时将该序列号插入到表的主键列中。
7、总结起来,序列是独立的数据库对象,它们可以用于生成唯一的数值序列,但与表没有直接关联。它们可以与其他数据库对象(如表)相关联,但这种关联是通过触发器等其他机制实现的。

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/一键难忘520/article/detail/906029
推荐阅读
相关标签
  

闽ICP备14008679号