我正在尝试创建一个表,其中主键是每次有INSERT事件时自动生成的UUID。但问题是当我尝试执行INSERT查询时跳过主键列,如下所示:
INSERT INTO `tablename` (`reference`) VALUES ('hey');
没有插入行且没有错误。只插入了#0; 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 ;
答案 0 :(得分:1)
您不能将Primary key
设为NULL
只需将其更改为NOT NULL
`uuid` char(36) NOT NULL,
表的主键表示您在最重要的查询中使用的列或列集。它具有关联的索引,以实现快速查询性能。查询性能受益于NOT NULL优化,因为它不能包含任何NULL值。