Oracle序列相关命令

1、Oracle创建序列命令

	CREATE SEQUENCE SEQ_ID_XXXXXX			-- 序列名称
	INCREMENT BY 1							-- 从1开始
	MINVALUE 0
	MAXVALUE 999999999999999999
	START WITH 1
	CACHE 20;

2、Oracle序列查询命令

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

3、Oracle序列删除命令

	
	// 删除序列命令
	DROP SEQUENCE SEQ_ID_XXXXXX;	-- 语法:DROP 序列名
	

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;


5、注意事项

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

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

小小野猪

若恰好解决你的问题,望打赏哦。

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值