关于mysql 批量生成 UUID

本文介绍如何在MySQL中使用REPLACE函数结合UPDATE语句实现批量更新操作,并提供了避免常见错误的方法,如解决1175错误。
部署运行你感兴趣的模型镜像
UPDATE tablename SET filename=(REPLACE((SELECT uuid()), '-', ''));

 

有几点需要注意:

     1 关于tablename就是表的名字,格式是 DB.TABLE  要不然会报 1046错误

     2 如果用的是workbench,直接运行可能会报 1175错误 因为是MySQL Workbench的默认的安全设置是不能批量更新表的。当要执行的SQL语句是进行批量更新或者删除的时候就会提示这个错误。

  解决方法如下:

  • 打开Workbench的菜单[Edit]->[Preferences...]
  • 切换到[SQL Editor]页面
  • 把[Forbid UPDATE and DELETE statements without a WHERE clause (safe updates)]之前的对勾去掉
  • 点击[OK]按钮
  • 最后记得要重启一下sql editor,建立一个新的连接就可以了。
  • 最后上传完成图一张

您可能感兴趣的与本文相关的镜像

ACE-Step

ACE-Step

音乐合成
ACE-Step

ACE-Step是由中国团队阶跃星辰(StepFun)与ACE Studio联手打造的开源音乐生成模型。 它拥有3.5B参数量,支持快速高质量生成、强可控性和易于拓展的特点。 最厉害的是,它可以生成多种语言的歌曲,包括但不限于中文、英文、日文等19种语言

### 配置MySQL以自动为每一行生成唯一的UUID值 为了在MySQL中实现UUID的自动生成,可以通过多种方法来完成这一目标。以下是几种常见的解决方案: #### 方法一:通过`DEFAULT`属性设置列默认值 可以在创建表时定义一个具有`DEFAULT UUID()`特性的字段。这样,在每次插入新记录而未指定该字段的值时,MySQL会自动为其分配一个新的UUID。 ```sql CREATE TABLE example_table ( id CHAR(36) NOT NULL DEFAULT (UUID()), name VARCHAR(255), PRIMARY KEY (id) ); ``` 此方法利用了MySQL内置的`UUID()`函数[^1],能够确保每条记录都有一个独特的标识符。 #### 方法二:使用触发器(Trigger) 如果已有表格或者不希望直接修改现有结构,则可以借助触发器来实现在插入操作前动态生成UUID的功能。 ```sql DELIMITER $$ CREATE TRIGGER before_insert_example_table BEFORE INSERT ON example_table FOR EACH ROW BEGIN IF NEW.id IS NULL THEN SET NEW.id = UUID(); END IF; END$$ DELIMITER ; ``` 上述脚本建立了一个名为`before_insert_example_table`的触发器,当向`example_table`插入数据且未提供`id`值时,它将调用`UUID()`函数来自动生成并填充这个缺失的值[^2]。 #### 方法三:批量插入过程中生成UUID 对于需要一次性导入大量数据的情况,可以直接在SQL语句内部嵌入`UUID()`调用来处理每一个单独的数据项。 ```sql INSERT INTO table_a(id, name) SELECT UUID(), b.name FROM table_b AS b WHERE 1=1; ``` 这种方法特别适用于从其他表复制数据的情形下保持各条目间的区分度[^3]。 #### 考虑事项与优化建议 尽管`UUID()`提供了极高的唯一性保障,但在某些场景下可能会遇到性能瓶颈或是存储空间浪费等问题。例如,由于其随机性质可能导致索引构建变得低效;另外,标准格式下的UUID占用较多字节数量也可能成为大型项目中的负担。针对这些问题,有研究指出采用更紧凑形式表示的方法如MD5散列化后的结果作为替代方案之一[^4][^5]。 然而需要注意的是,虽然经过哈希转换后得到的新串具备较低视觉重复率特性,但从理论上讲仍存在碰撞可能性,并且丧失掉原始时间戳信息等内容意义。因此除非确实面临特殊需求限制,一般推荐继续沿用未经加工的标准版UUID设计思路即可满足绝大多数实际应用场景的需求。
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值