zoukankan      html  css  js  c++  java
  • MySQL的主键也想使用uuid

    问题描述-

    学习项目时,案例中使用的是oracel数据库.建表时主键可以直接指定default uuid();

    但是mysql并没有这种写法,自己写了不少奇怪的建表语句均不通过,从网上学习到了可以通过触发器实现。

    问题解决-

    建表时并不设置主键id为uuid

    CREATE TABLE `product` (
      `id` varchar(36) NOT NULL,
      `productNum` varchar(50) NOT NULL,
      `productName` varchar(50) DEFAULT NULL,
      `DepartureTime` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP,
      `productPrice` double DEFAULT NULL,
      PRIMARY KEY (`id`),
      UNIQUE KEY `product` (`id`,`productNum`)
    ) ;

    而是在每次插入数据之前 BEFORE INSERT ON `XXXX` FOR EACH ROW 设置一个触发器,每当插入时不必提供id属性的值,而是交给触发器在每次插入自动生成uuid

    CREATE TRIGGER `product_before_insert` BEFORE INSERT ON `product` FOR EACH ROW 
    BEGIN
    IF new.id is NULL THEN
            SET new.id = UUID();
    END IF; 
    END;

    问题后续-

    1`注意id属性设置时的长度 32是不够的

    2`注意表名列名使用`XXXXX` ,而插入数据时使用的是'XXXX'

    3`此方法生成的uuid存在 '-' 

  • 相关阅读:
    UVa10779
    UVa10779
    C++ 内存管理学习笔记
    c++ 学习笔记
    AcWing 275 传纸条
    I
    Tree HDU6228
    Lpl and Energy-saving Lamps
    C
    Secret Poems
  • 原文地址:https://www.cnblogs.com/YFEYI/p/15107353.html
Copyright © 2011-2022 走看看