Oracle生成唯一主键

主键生成有两种方式  

一种是使用oracle提供的sys_guid() 生成16个字节的原始值

一种是使用序列加上触发器

第一种sys_guid()

首先执行查看一下
select sys_guid() from dual;

能看到打印出来的是一个32位字符串

在创建表的时候给需要作为主键的字段加上一个默认值default设置

create table test_user
(
       guid varchar2(36) default sys_guid() NOT NULL PRIMARY KEY  
);

第二种使用Sequence

首先创建一张表,名为TEST_USER

CREATE TABLE TEST_USER
(
       ID NUMBER(11) NOT NULL PRIMARY KEY,
       USER_ID VARCHAR2(11),
       USER_NAME VARCHAR2(11),
       CREATED_BY VARCHAR2(11),
       GMT_CREATE DATE,
       MODIFIED_BY VARCHAR2(11),
       GMT_MODIFIED DATE,
       IS_DELETED NUMBER(1) 
);

给TEST_USER表添加注释说明

-- 添加表注释
COMMENT ON TABLE TEST_USER IS '测试用户表';
-- 添加字段注释
COMMENT ON COLUMN TEST_USER.ID IS '主键';
COMMENT ON COLUMN TEST_USER.USER_ID IS '用户ID';
COMMENT ON COLUMN TEST_USER.USER_NAME IS '用户名称';
COMMENT ON COLUMN TEST_USER.CREATED_BY IS '创建人';
COMMENT ON COLUMN TEST_USER.GMT_CREATE IS '创建时间';
COMMENT ON COLUMN TEST_USER.MODIFIED_BY IS '修改人';
COMMENT ON COLUMN TEST_USER.GMT_MODIFIED IS '修改时间';
COMMENT ON COLUMN TEST_USER.IS_DELETED IS '1 表示删除,0 表示未删除';

创建一个序列号

CREATE SEQUENCE TEST_USER_ID -- 序列号名称
MINVALUE 1 -- 最小值
MAXVALUE 999999999   -- 最大值 
INCREMENT BY 1    -- 自增步长为1
START WITH 1;   -- 初始值

为TEST_USER表创建一个主键ID字段自动增长的触发器

CREATE OR REPLACE TRIGGER TRIGGER_TEST_USER_ID
BEFORE INSERT  -- 添加数据前
ON TEST_USER  -- 触发器作用的对象
FOR EACH ROW  -- 指定创建的是行级触发器
BEGIN
  SELECT TEST_USER_ID.nextval -- 使用名为TEST_USER_ID的序列号
  INTO :NEW.ID FROM dual;
END;

 

  • 2
    点赞
  • 9
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值