欢迎来到尧图网

客户服务 关于我们

您的位置:首页 > 教育 > 幼教 > DBeaver使用触发器实现uuid列自添加

DBeaver使用触发器实现uuid列自添加

2025/9/21 1:50:00 来源:https://blog.csdn.net/qq_43583887/article/details/143770569  浏览:    关键词:DBeaver使用触发器实现uuid列自添加

需求:如果表中有一些敏感字段,为了安全性和更方便业务上的处理,一般禁止使用自增id作为数据关联字段。

1、先建个测试表zq_test。

create table zq_test (c_id int,c_name varchar(100),c_number int
);insert into zq_test values(1,'aaa',111);
insert into zq_test values(2,'bbb',222);

2、然后再新建一个表字段c_uuid

alter table zq_test add column c_uuid varchar(36) not null;

3、执行好后,表有了这个字段,但是没数据。再执行下面这个语句。

update zq_test set c_uuid = uuid();

有一个注意事项就是使用uuid()这个函数必须mysql8.0以上,可以使用select version();进行查看。

此时你的表有了c_uuid的数据,并且也是独一无二的值,但是你想再没增加一条数据时就实现这个列的数据自动生成,这个时候就需要使用到触发器了。

5、你可以先在左侧导航栏,zq_test表下面,点击到触发器,右键新建触发器generate_uuid。好了以后,在源中编写代码。
有个注意点是你需要把自动添加的源中的代码after 改成 before

如果你的目的是在数据插入、更新等操作发生时,对即将要插入或更新的数据行进行修改,例如给某个字段设置值(像前面为 c_uuid字段设置 UUID 值的场景),那应该将触发器的类型修改为 BEFORE 触发器。BEFORE触发器是在实际的插入、更新等操作执行之前被触发,这样你就可以通过 NEW 关键字来访问和修改即将要操作的数据行的内容了

在最后面添加一段代码

beginset new.c_uuid = UUID();
end

我把源中的完整代码也写上。

CREATE TRIGGER generate_uuid
BEFORE INSERT 
ON zq_test FOR EACH ROW
BEGINSET new.c_id = UUID();
END;

6、然后点击保存执行。执行成功后使用下面语句试试

insert into zq_test(c_id,c_name,c_number) values(3,'ccc',333);select * from zq_test

此时c_uuid列应该已经实现了数据的自动添加。

版权声明:

本网仅为发布的内容提供存储空间,不对发表、转载的内容提供任何形式的保证。凡本网注明“来源:XXX网络”的作品,均转载自其它媒体,著作权归作者所有,商业转载请联系作者获得授权,非商业转载请注明出处。

我们尊重并感谢每一位作者,均已注明文章来源和作者。如因作品内容、版权或其它问题,请及时与我们联系,联系邮箱:809451989@qq.com,投稿邮箱:809451989@qq.com

热搜词