我正在尝试在MySQL 8.0.17中向现有表添加一列。该列需要包含UUID,并且我正在尝试将其设置为默认值。
这是我执行的语句:
ALTER TABLE myTable ADD COLUMN UUID varchar(36) NOT NULL DEFAULT (UUID());
不过我遇到了如下错误
错误代码: 1674。该语句不安全,因为它使用可能在从库上返回不同值的系统函数。
我已经从其他帖子中了解到可以在表上创建触发器,但我想知道是否可以直接将其设置为列的默认值。
此外,使用 UUID 的二进制转换与仅使用简单 UUID 相比有何优势?
例如:
ALTER TABLE myTable ADD COLUMN UUID binary(16) NOT NULL DEFAULT (UUID_TO_BIN(UUID(), true));
感谢你的帮助。
CHAR(36)
,因为它始终具有相同的长度。 - Dark Knight