MYSQL GUID 触发器

MYSQL GUID Trigger

我创建了以下 table:

CREATE TABLE GUID(guid BINARY(16),user VARCHAR(16),expire INT(10));

我的目标是在某行的 guid = null 时创建默认 guid。 为此,我创建了一个触发器:

CREATE TRIGGER default_guid 
BEFORE INSERT ON GUID
FOR EACH ROW BEGIN
IF new.guid IS NULL THEN
SET new.guid = UNHEX(REPLACE(UUID(), '-', ''));
END IF;
END;

但是,我在创建此触发器时收到以下语法错误:

ERROR 1064 (42000): You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near '' at line 5

我试过几个在线语法检查器都没有成功;我的语法错误在哪里?

默认情况下,MySQL 使用分号 (;) 来终止语句。但是,在创建触发器时,您有多个语句组成它,因此您需要告诉 MySQL 分号并不表示您已完成触发器定义,而只是表示该语句。这可以通过将分隔符设置为另一个字符组合来完成,例如 $$:

-- Set the delimiter to $$
DELIMITER $$

CREATE TRIGGER default_guid 
BEFORE INSERT ON GUID
FOR EACH ROW
BEGIN
    IF new.guid IS NULL THEN
        SET new.guid = UNHEX(REPLACE(UUID(), '-', ''));
    END IF;
END;
$$ -- Trigger ends here

-- Reset the delimiter to ;
DELIMITER ;