我试图创建一个表,其中主键在每次发生INSERT事件时自动生成UUID。但问题是,当我尝试执行插入查询时,跳过主键列,如下所示:
INSERT INTO `tablename` (`reference`) VALUES ('hey');
没有行被插入并且没有错误。只是“插入了0行…”
这是我的桌子和扳机。谢谢您。
CREATE TABLE `tablename` (
`uuid` char(36) NULL,
`reference` varchar(100) NOT NULL,
PRIMARY KEY (uuid)
);
DELIMITER ;;
CREATE TRIGGER before_insert_tablename
BEFORE INSERT ON tablename
FOR EACH ROW
BEGIN
IF new.uuid IS NULL THEN
SET new.uuid = uuid();
END IF;
END
;;
DELIMITER ;
最佳答案
不能将Primary key
设为NULL
只需将其更改为NOT NULL
`uuid` char(36) NOT NULL,
表的主键表示在最重要的查询中使用的列或列集。它有一个相关的索引,用于快速查询性能。查询性能得益于非空优化,因为它不能包含任何空值。
Reference
关于mysql - 主键UUID触发器,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/42477600/