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


最新评论