精华内容
下载资源
问答
  • mysql生成唯一主键的方法
    千次阅读
    2019-05-28 15:00:57

    UUID.randomUUID();

    或者获取时间到秒获取唯一主键

    或者写算法获取唯一主键

    更多相关内容
  • 什么是主键? 在数据库中,常常不只是一个表,这些表之间也不是相互独立的。不同的表之间需要建立一种关系,才能将它们的数据相互沟通。而在这个沟通过程中,就需要表中有一个字段作为标志,不同的记录对应的字段...
  • Oracle生成唯一主键

    2020-12-14 10:40:36
    主键生成有两种方式 一种是使用oracle提供的sys_guid() 生成16个字节的原始值 一种是使用序列加上触发器 第一种sys_guid() 首先执行查看一下 select sys_guid() from dual; 能看到打印出来的是一个32位字符串 在创建...

    主键生成有两种方式  

    一种是使用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;

     

    展开全文
  • Java生成唯一主键

    千次阅读 2019-05-10 09:39:43
    一般有时候我们需要生成唯一主键id,如果数据库是mysql我们可以使用主键自增,如果是oracle我们可以创建触发器或者序列,如果不借助数据库我们也可以在java层面自己生成唯一主键。 代码如下: /* 生成唯一主键 ...

    一般有时候我们需要生成唯一主键id,如果数据库是mysql我们可以使用主键自增,如果是oracle我们可以创建触发器或者序列,如果不借助数据库我们也可以在java层面自己生成唯一主键。

    1. 使用随机数:
    /*
        生成唯一主键
        格式:时间+随机数
         */
        public static  String genUniqueKey() {
            Random random = new Random();
            Integer number = random.nextInt(900000) + 100000;
            return System.currentTimeMillis() + String.valueOf(number);
        }
    
    1. 使用UUID
    public static String getUUID(){
    
            UUID uuid=UUID.randomUUID();
            String uuidStr=uuid.toString();
            return uuidStr;
    }
    
    展开全文
  • MySQL约束(主键唯一,非空,外键) 概念: 对表中的数据进行限定,保证数据的正确性、有效性和完整性。 分类: 1. 主键约束:primary key 2. 非空约束:not null 3. 唯一约束:unique 4. 外键约束:foreign key ...
  • Java利用时间戳生成三种唯一主键

    千次阅读 2020-05-25 02:19:40
    /** * @Author: lgz * @Date: 2020/5/24 23:44 */ public enum IdUtil { //有年月日的时间id TIME_DATE_ID { public long generateId() { return Long.parseLong(DateTimeFormatter.ofPattern(...
    /**
     * @Author: lgz
     * @Date: 2020/5/24 23:44
     */
    public enum IdUtil {
        //有年月日的时间id
        DATE_TIME_ID {
            public long generateId() {
                return Long.parseLong(DateTimeFormatter.ofPattern("yyyyMMddHHmmssSSS")
                        .format(LocalDateTime.ofInstant(Instant.ofEpochMilli(super.generateId()), ZoneId.systemDefault())));
            }
        },
        //直接返回时间戳
        TIMESTAMP_ID {
            public long generateId() {
                return super.generateId();
            }
        },
        //时间戳左移10
        SHIFT_ID {
            public long generateId() {
                return super.generateId() << 10;
            }
        };
    
    
        //上一次的时间戳
        //在集群环境中,可以使用redis存储上一次时间
        private long lastTimestamp = -1L;
    
        //在集群环境中,可以使用分布式锁
        private Lock lock = new ReentrantLock();
    
        private long nowTimestamp;
    
        public long generateId() {
            lock.lock();
            nowTimestamp = 0;
            try {
                nowTimestamp = Instant.now().toEpochMilli();
                if (lastTimestamp == nowTimestamp) {
                    lastTimestamp = waitNextMilli();
                } else if (lastTimestamp > nowTimestamp) {
                    throw new RuntimeException("time error when generated the id.");
                } else {
                    lastTimestamp = nowTimestamp;
                }
            } finally {
                lock.unlock();
            }
            if (nowTimestamp == 0) {
                throw new RuntimeException("unknown error when generated the id.");
            }
    
            return nowTimestamp;
        }
    
        private long waitNextMilli() {
            //判断是否进入下一毫秒
            //如果并发量特别高,会给cpu带来额外负荷
            do {
                nowTimestamp = Instant.now().toEpochMilli();
            } while (nowTimestamp == lastTimestamp);
            return nowTimestamp;
    
            //直接睡一毫秒
    //        try {
    //            TimeUnit.MILLISECONDS.sleep(1);
    //        } catch (InterruptedException e) {
    //            e.printStackTrace();
    //        }
    //        nowTimestamp = Instant.now().toEpochMilli();
    //        return nowTimestamp;
        }
    }
    
    展开全文
  • 大家都知道mysql数据库可以直接使用autoincrement关键字实现id的自动生成、增长,但是在oracle数据库,怎么实现类似的自动生成唯一主键呢?其实很简单,例子如下: CREATE TABLE student( id varchar2(32) default...
  • Sharding JDBC (八) 分布式唯一主键

    千次阅读 2020-05-14 15:02:01
    三、Sharding JDBC 使用Snowflake生成唯一主键ID 配置文件制定 使用DefaultKeyGenerator 类获取 Snowflake时钟回拨问题 一、 Sharding-JDBC主键 软件项目开发中,主键自动生成是基本需求。而各个数据库对于该...
  • 在oracle8i以后提供了一个生成不重复...其应用场景:当数据库某字段设置为唯一,则可用次生成(比如主键); 获取方式select sys_guid() from dual ; 结合MyBatis框架的应用,只需要在数据库插入操作时加入: &...
  • 分布式数据库唯一主键设计
  • MongoDB给表设置唯一主键记录。

    千次阅读 2019-07-17 15:23:55
    爬虫时,存入MongoDB,防止数据重复可以添加主键 db.表名.ensureIndex({'字段名':1},{unique:true})
  • 项目中唯一主键生成方案

    千次阅读 2019-05-08 10:28:14
    第一种方案:利用Redis的incr函数 由于Redis是单线程的,因此订单号生成也就不会重复,但是Redis有个非常大的缺陷,那就是不太稳定,容易故障。我们可以使用Redis集群来提高安全性,但是还是有可能集群的所有Redis...
  • 在平时开发时,如果没有定义数据库自动生成ID的机制,可以使用java自带的uuid生成随机唯一主键,在插入数据库时,可以直接给ID主键赋值;这个uuid方法,在java自带的utils包里,就可以直接调用: 示例: public ...
  • Oracle唯一主键ID的生成

    万次阅读 2017-06-09 18:49:34
    SYS_GUID产生并返回一个全球唯一的标识符(原始值)由16个字节组成。在大多数平台,生成的标识符由主机标符,执行函数的进程或者线程标识符,和进程或线程的一个非重复的值(字节序列)组成。可以用来生成唯一标识ID。 ...
  • redis 来生成全局唯一主键

    千次阅读 2018-06-12 13:40:09
    [quote] https://blog.csdn.net/UnknownZYB/article/details/78334250 [/quote]
  • db2中常用的生成唯一主键的几种方式 一、generate_unique() 这个方法类似于Oracle中的sys_guid(),用于生成一个随机不重复的13个字节的字符串。常常用来作为表的主键使用。 create table customers ( custno ...
  • mysql生成唯一主键

    千次阅读 2016-12-26 17:16:24
    使用mysql的UUID()函数,但因为UUID()生成的数值是含有"-"的,因此使用REPLACE(UUID(),'-',''),生成32位唯一主键
  • hive表是没有主键的,但在建表时最好加一个主键,方便查询。联合主键另说,其实也就可一利用联合主键来。 1.uuid 2.row_number() 例子: insert into tbl_dim select row_number() over (order by tbl_stg.id) + t2....
  • 1.创建主键语法 ALTER TABLE table_name ADD CONSTRAINT pk_name ...使用组合主键 如果一列不能唯一区分一个表里的记录时,可以考虑多个列组合起来达到区分表记录的唯一性,形式 ①创建时:create table sc ( student
  • SQL Server 创建约束图解 唯一 主键

    千次阅读 2017-11-14 11:23:58
    SQLServer中有五种约束,Primary Key约束、Foreign Key约束、Unique约束、Default约束和Check约束,今天使用SQL Server2008来演示下这几种约束的创建和使用的方法。... 这样的一列或多列成为表的主键(Prim
  • import java.text.SimpleDateFormat; import java.util.Calendar;...同时,我在思考如何保证在一天时间内生成唯一的7位随机数字,这样组合成的主键(日期时间+7位随机数)是唯一的。欢迎留言评论!
  • 首先说明一点,主键又称主键约束,它也是一种约束,看下它和唯一约束的创建语法: alter table Person add constraint PK_Id primary key (Id) alter table Person add constraint UQ_Name unique (Name) 主键和...
  • 在分布式项目中经常会用到生成唯一主键,或者生成顺序号,现通过Redis实现顺序号的生成。 话不多说,直接上代码 1、生成唯一主键工厂方法接口如下 /** * 获取唯一序列工厂方法 */ public interface ...
  • 平时业务量比较大,一张HIVE表里面的字段也比较多,如何判断所select 的这几个字段是这张表的唯一主键,也就是,选取这几个主键,可以唯一确定只有一行数据 可以通过,select A,B,C from table group by A,B,C ...
  • MySQL主键约束和唯一性约束都是索引,它们的区别是:主键字段可以确保唯一性,但主键字段不能为NULL.唯一性约束可以确保唯一性,MySQL主键约束和唯一性约束都是索引,它们的区别是:mysql-workbench无法创建多字段...
  • 文章目录Question生成主键的常见方案UUID ? (不推荐)Snowflake缺点:时钟回拨数据库维护区间分配总结 Question 在单库单表时,业务 ID 可以依赖数据库的自增主键实现,现在我们把存储拆分到了多处,如果还是用...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 291,028
精华内容 116,411
关键字:

唯一主键

友情链接: dockpanelsuite-master.zip