SQL同时转换外键?(MySQL 5.5)
我有一个带有自然键的表和另一个带有外键Constant的表: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上执行一个转换 显然,如果我
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);
这不就是为什么吗?