oracle 解决主键自增问题

sql server和mysql都可以设置主键自增,而oracle主键是没有自增属性的,可以通过如下两种方式实现:
  1、建立序列通过触发器实现
     创建序列
   
CREATE SEQUENCE MESSAGEID MINVALUE 1 MAXVALUE START WITH 1 INCREMENT BY 1 NOCACHE; 

     创建触发器
    
CREATE OR REPLACE TRIGGER ID_TRIGGER
 BEFORE INSERT ON box FOR EACH ROW DECLARE newId NUMBER(18,0); 
BEGIN SELECT MESSAGEID.nextval INTO newId FROM dual; :new.Id := newId; 
END;

      
  2、建立序列在sql语句中使用序列获取的id
      创建序列
   
CREATE SEQUENCE MESSAGEID MINVALUE 1 MAXVALUE START WITH 1 INCREMENT BY 1 NOCACHE; 

    在sql语句中使用
      a、得到id:
SELECT MESSAGEID.nextval FROM dual; 

     b、直接使用:
INSERT INTO box(id,name) VALUES(MESSAGEID.nextval,"sa")

你可能感兴趣的:(oracle,sequence)