You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何生成含Binary16类型UUID唯一列的MySQL视图?

解决方案

要在MySQL视图中生成类型为BINARY(16)的UUID列,你可以通过创建自定义函数实现,因为自定义函数能明确指定返回类型为BINARY(16),覆盖常规UUID函数默认返回VARBINARY(16)的行为。

步骤1:创建返回BINARY(16)的UUID生成函数

执行以下SQL创建自定义函数:

DELIMITER //
CREATE FUNCTION generate_binary_uuid() RETURNS BINARY(16)
DETERMINISTIC
BEGIN
    RETURN UUID_TO_BIN(UUID());
END //
DELIMITER ;

步骤2:基于自定义函数创建视图

调用该函数创建视图,生成的列类型将是BINARY(16):

CREATE VIEW view_name AS SELECT generate_binary_uuid() AS uuid_column_name;

验证列类型

你可以通过查询元数据确认列类型:

SELECT DATA_TYPE, CHARACTER_MAXIMUM_LENGTH 
FROM INFORMATION_SCHEMA.COLUMNS 
WHERE TABLE_NAME = 'view_name' AND COLUMN_NAME = 'uuid_column_name';

补充说明

UUID_TO_BIN()和UNHEX()的默认返回类型是VARBINARY(16),即便用CAST(...) AS BINARY(16)转换,MySQL视图仍会识别为VARBINARY(16)——因为视图列类型由表达式的底层返回类型决定。而自定义函数通过显式声明返回类型,能强制视图使用BINARY(16)。

内容的提问来源于stack exchange,提问作者key

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.17 06:30:00