gpt4 book ai didi

sql - mysql中列的GUID默认值

转载 作者:IT老高 更新时间:2023-10-29 00:20:22 24 4
gpt4 key购买 nike

我希望列默认为 GUID,因此如果我正在执行插入操作但未明确设置值,我希望它默认为新的 GUID 值。

我该怎么做?

最佳答案

Previous answer不太正确——你必须小心触发器......如果像在那个例子中那样使用它们,它们实际上会覆盖你传入的任何默认值。当没有设置主键时,一切都会正常工作,但如果你用 INSERT 传递一个,它会被触发器用一个新的随机键删除。

要使其正常工作,您必须在分配新值之前检查该字段是否已有值,如下所示:

DELIMITER ;;
CREATE TRIGGER `sometrigger`
BEFORE INSERT ON `sometable`
FOR EACH ROW
BEGIN
IF ASCII(NEW.uuid) = 0 THEN
SET NEW.uuid = UNHEX(REPLACE(UUID(),'-',''));
END IF;
SET @last_uuid = NEW.uuid;
END
;;

我使用 ASCII() 来检查新字段值,因为无论数据是文本格式还是二进制格式,ASCII() 都会为空字符串返回 0 (空字符串是未设置默认值的字段的默认值)。我还使用 binary(16) 来存储我的 UUID,以获得最有效的存储空间和查询速度......如果您不想处理二进制字段的复杂性,那么您可以简单地使用 UUID()char(36) 字段代替 UNHEX(REPLACE(UUID(),'-',''))

关于sql - mysql中列的GUID默认值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4057030/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com