mysql实现将列默认值设置为uuid

 更新时间:2025年11月10日 09:05:23   作者:nayi_224  
在MySQL 8.1.0中建表时,主键和普通列都可以设置默认值,需要注意的是,使用UUID()函数时必须加上括号,否则会报错,修改时同样需要加括号,目前无法使用自定义函数作为默认值,MySQL也不支持,可以使用内置函数如LENGTH、CONCAT等,但若可能,应尽量避免使用触发器来设置默认值

使用mysql版本为8.1.0

建表时设置

create table test(
  uuid varchar(100) NOT NULL default (uuid()) ,
  aaaa varchar(100) not null default (uuid()) ,
  primary key(uuid) 
);

可以看到主键和普通列都可以设置,但是要注意uuid()要加上括号,否则会报错

修改时设置

ALTER TABLE test MODIFY uuid VARCHAR(36) DEFAULT (uuid());
ALTER TABLE test MODIFY aaaa VARCHAR(36) DEFAULT (uuid());

同样注意要添加括号

使用自定义函数

目前没有使用默认值的方式设置成功过,mysql好像不支持使用自定义函数作为默认值

CREATE FUNCTION custom_function_name()
RETURNS int
DETERMINISTIC
BEGIN
    RETURN 1;
END;
ALTER TABLE test MODIFY aaaa VARCHAR(36) DEFAULT (custom_function_name());


会报错 3770 - Default value expression of column 'aaaa' contains a disallowed function: custom_function_name.

而使用其他内置函数,如length、concat等是可以的

这时应该只能使用触发器了,需要注意的是,在设置默认值时,只要能不使用触发器,就一定不要使用

CREATE FUNCTION custom_function_name()
RETURNS int
DETERMINISTIC
BEGIN
    RETURN 1;
END;

create trigger tri_test_uuid
before insert on test
for each ROW
BEGIN
    SET new.aaaa=custom_function_name();
END
;

总结

以上为个人经验,希望能给大家一个参考,也希望大家多多支持脚本之家。

相关文章

  • MySQL中的存储过程和触发器详解

    MySQL中的存储过程和触发器详解

    本文系统介绍了MySQL存储过程的创建与使用,包括变量定义、条件判断、循环控制、游标操作等核心知识,详细讲解了存储过程的优缺点分析,以及存储函数与触发器的区别与应用场景,通过具体示例演示了如何实现参数传递、条件处理、日志记录等功能
    2025-09-09
  • MySQL中的交叉连接、自然连接和内连接查询详解

    MySQL中的交叉连接、自然连接和内连接查询详解

    这篇文章主要介绍了MySQL中的交叉连接、自然连接和内连接查询,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教
    2025-04-04
  • 为MySQL创建高性能索引

    为MySQL创建高性能索引

    这篇文章介绍了为MySQL创建高性能索引的方法,文中通过示例代码介绍的非常详细。对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考下
    2022-04-04
  • 使用bin-log日志还原数据库的例子

    使用bin-log日志还原数据库的例子

    使用bin-log日志还原数据库的例子,供大家学习参考
    2013-02-02
  • MySQL SELECT数据查看WHERE(AND OR IN NOT)语句

    MySQL SELECT数据查看WHERE(AND OR IN NOT)语句

    这篇文章主要介绍了MySQL SELECT数据查看WHERE(AND OR IN NOT)de 语句学习,非常适合新手小白朋友,有需要的朋友可以借鉴参考下,希望能够有所帮助,祝大家多多进步,早日升职加薪
    2023-05-05
  • MySQL 常用命令示例详解(使用mysql)

    MySQL 常用命令示例详解(使用mysql)

    本文系统介绍了MySQL常用命令,涵盖数据库管理、数据操作、备份恢复及查询优化,包括启停服务、连接操作、表结构管理、数据增删改查、文件导入导出和性能分析等实用脚本示例
    2025-07-07
  • MySQL删除表数据、清空表的实现过程

    MySQL删除表数据、清空表的实现过程

    这篇文章主要介绍了MySQL删除表数据、清空表的实现过程,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教
    2025-10-10
  • MySQL索引失效的问题解决

    MySQL索引失效的问题解决

    索引可以大大提高查询速度和效率,但如果索引失效了,查询的效率会变得非常低,本文主要介绍了MySQL索引失效的问题解决,感兴趣的可以了解一下
    2024-05-05
  • MySQL性能优化的最佳20+条经验

    MySQL性能优化的最佳20+条经验

    这篇文章主要为大家详细介绍了MySQL性能优化的最佳20+条经验,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2016-09-09
  • mysql如何批量修改表名前缀

    mysql如何批量修改表名前缀

    这篇文章主要介绍了mysql如何批量修改表名前缀的实现方式,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教
    2025-05-05

最新评论