写在前面
- 在做黑马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);
叁 | 注意
- 创建触发器时提示语法错误,后来尝试加上下图红框中的语句就解决了。
完成。