主键UUID触发器

时间:2017-02-27 03:58:40

标签: mysql triggers primary-key uuid

我正在尝试创建一个表,其中主键是每次有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 ;

1 个答案:

答案 0 :(得分:1)

不能Primary key设为NULL

只需将其更改为NOT NULL

即可
`uuid` char(36) NOT NULL,
  

表的主键表示您在最重要的查询中使用的列或列集。它具有关联的索引,以实现快速查询性能。查询性能受益于NOT NULL优化,因为它不能包含任何NULL值。

Reference