mysql设置主键为uuid及触发器语法错误1064的问题


写在前面

  • 在做黑马ssm项目过程中,遇到了很多异常,其中就有oracle数据库转mysql数据库过程中出现的一些问题,之前一度因为拖延症+期末复习把处理项目bug搁置,晚上看到码友的私信才来解决,此处蟹蟹那位同学。


壹 | 出现的问题

  • 在做黑马ssm项目时,黑马采用oracle,因为没有安装oracle所以选择了mysql。但是在建表的时候,oracle可以直接设置uuid,mysql则需要用到触发器
  • 在创建触发器的过程中,mysql一直提示我语法错误,但是检查了很多遍,不管是表名和触发器名称需要用单引号,还是分号的问题都没有出错,真是丈二的和尚摸不着头脑。
    在这里插入图片描述

贰 | 对应代码

#查询表中全部信息
SELECT * FROM product

#删除product表
DROP TABLE IF EXISTS `product`;

CREATE TABLE `product` (
  `id` VARCHAR(36) NOT NULL,
  `productNum` VARCHAR(50) NOT NULL,
  `productName` VARCHAR(50) DEFAULT NULL,
  `cityName` VARCHAR(50) DEFAULT NULL,
  `DepartureTime` TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP,
  `productPrice` DOUBLE DEFAULT NULL,
  `productDesc` VARCHAR(500) DEFAULT NULL,
  `productStatus` INT(11) DEFAULT NULL,
  PRIMARY KEY (`id`),
  UNIQUE KEY `product` (`id`,`productNum`)
) ENGINE=INNODB DEFAULT CHARSET=utf8;


/*删除触发器*/
DROP TRIGGER IF EXISTS `product_before_insert`;

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

#往表中增添数据
INSERT INTO PRODUCT (productnum, productname, cityname, departuretime, productprice, productdesc, productstatus) 
VALUES ('itcast-002', '北京三日游', '北京', NOW(), 1200, '不错的旅行', 1); 

INSERT INTO PRODUCT (productnum, productname, cityname, departuretime, productprice, productdesc, productstatus) 
VALUES ('itcast-003', '上海五日游', '上海', NOW(), 1800, '魔都我来了', 0); 

INSERT INTO PRODUCT (productnum, productname, cityname, departuretime, productprice, productdesc, productstatus) 
VALUES ('itcast-001', '北京三日游', '北京', NOW(), 1200, '不错的旅行', 1);

叁 | 注意

  • 创建触发器时提示语法错误,后来尝试加上下图红框中的语句就解决了。
    在这里插入图片描述

完成。

评论 9
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值