簡體   English   中英

SQL同時轉換外鍵? (MySQL 5.5)

[英]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_idB.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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM