Sql 在Rails中更新大表,而不锁定该表较长时间

Sql 在Rails中更新大表,而不锁定该表较长时间,sql,Sql,我有1000封电子邮件在一个大型用户表中,其无效电子邮件地址以“.c”而不是“.com”结尾。如何在批处理SQL查询中将这些电子邮件更改为“.com”?我正在尝试编写一个迁移,它将批量修复所有这些电子邮件,这样我就不会锁定数据库 以下是我目前掌握的情况: select email from users where email like '%.c' 请确保字段长度足够,然后尝试以下操作: update users set email = concat

我有1000封
电子邮件
在一个大型
用户
表中,其无效电子邮件地址以“.c”而不是“.com”结尾。如何在批处理SQL查询中将这些电子邮件更改为“.com”?我正在尝试编写一个迁移,它将批量修复所有这些电子邮件,这样我就不会锁定数据库

以下是我目前掌握的情况:

select 
     email 
from 
     users 
where 
     email like '%.c'

请确保字段长度足够,然后尝试以下操作:

update users
   set email = concat(email,'om')
 where
 email like '%.c'

请确保字段长度足够,然后尝试以下操作:

update users
   set email = concat(email,'om')
 where
 email like '%.c'

您想做什么?可能不是更改数据库,而是更改模型?我确实更改了模型以进行一些验证,但数据库中仍然存在错误数据。@Jwan622模型可以解释错误数据,并在遇到
.c
时显示
.com
。或者如果你真的担心性能,你可以机会主义地更新每一条记录,而不是一次全部更新。你想做什么?也许不是改变数据库,更改模型?我确实更改了模型以进行一些验证,但数据库中仍然存在错误数据。@Jwan622只要遇到
.c
,模型就可以解释错误数据并显示
.com
。或者,如果您真的担心性能,您可以机会主义地更新每个记录,而不是一次全部更新。