edwardcmh

人氣不過肥皂泡

  博客园 :: 首页 :: 博问 :: 闪存 :: 新随笔 :: 联系 :: 订阅 订阅 :: 管理 ::

SQL Server中实现自增列只需要将字段定义为IDENTITY(1,1),而在Oracle中自增列需要使用一个序列(SEQUENCE)和触发器来实现。

1. 创建SEQUENCE,首先需要有CREATE SEQUENCE或者CREATE ANY SEQUENCE权限

CREATE SEQUENCE s_id INCREMENT BY 1 START WITH 1 MAXVALUE 999999999;

创建一个序列从1开始自增,最大值到999999999。

或者不设置最大值:

CREATE SEQUENCE s_id NOMAXVALUE NOCYCLE
--INCREMENT BY 1 	-- 每次加几个
--START WITH 1 		-- 从1开始计数
--NOMAXVALUE 		-- 不设置最大值
--NOCYCLE 		-- 一直累加,不循环
--CACHE 10;		-- 缓存序列个数,有助于提高效率,但可能造成跳号

2. 创建表的BEFORE INSERT触发器,使用该SEQUENCE

CREATE OR REPLACE TRIGGER BEFORE_INSERT_T_XXX
  BEFORE INSERT ON "T_XXX" FOR EACH ROW
BEGIN
  SELECT s_id.nextval INTO :new.COL_ID FROM dual;
END;

或者不使用触发器,在INSERT语句中直接使用s_id.nextval获取下一个自增值。

posted on 2012-05-08 11:27  edwardcmh  阅读(1602)  评论(0编辑  收藏  举报