SQL同时转换外键?(MySQL 5.5)

SQL同时转换外键?(MySQL 5.5),mysql,sql,Mysql,Sql,我有一个带有自然键的表和另一个带有外键Constant的表: create table A ( id varchar(255) not null primary key ... ) create table B ( a_id varchar(255) not null ... foreign key (a_id) references A (id) ) 我想在a.id上执行一个转换(在本例中是小写),同时在B.a\u id上执行一个转换 显然,如果我

我有一个带有自然键的表和另一个带有外键Constant的表:

create table A
(
    id varchar(255) not null primary key
    ...
)

create table B
(
    a_id varchar(255) not null
    ...

    foreign key (a_id) references A (id)
)
我想在
a.id
上执行一个转换(在本例中是小写),同时在
B.a\u id
上执行一个转换

显然,如果我这样做:

update A set id=lower(id);
update B set a_id=lower(a_id);
然后,我将在第一次更新时获得外键约束冲突


是否存在“同时”执行这两个更新的方法,或者您可以推荐另一种方法来处理此问题?

最简单的方法可能是删除约束

执行更新查询


再次引入外键约束。

删除约束,并使用更新级联重新创建约束

然后在父表上执行UPDATESTAMENT,子表不会被修改

 ALTER  TTABLE b ADD CONSTARINT fk_const 
 FOREIGN KEY(a_id) REFERENCE  a (id) ON UPDATE CASCADE 
现在执行此更新

 update A set id=lower(id);
这不就是为什么吗?