[英]SQL simultaneously transforming foreign key? (MySQL 5.5)
我有一個帶有自然鍵的表,另一個帶有外鍵的表:
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_id
上B.a_id
。
顯然,如果我這樣做:
update A set id=lower(id);
update B set a_id=lower(a_id);
比起第一次更新,我將收到一個外鍵約束沖突。
無論如何,是否可以“同時”執行兩個更新,或者您可以推薦另一種方式來處理此更新?
最簡單的方法可能是刪除約束,
執行更新查詢
再次,介紹外鍵約束。
刪除約束並使用ON UPDATE CASCADE重新創建約束
然后在父表上執行更新步驟,不會修改子表。
ALTER TTABLE b ADD CONSTARINT fk_const
FOREIGN KEY(a_id) REFERENCE a (id) ON UPDATE CASCADE
現在執行此更新
update A set id=lower(id);
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.