0

私は自然キーを持つテーブルと、それに対する外部キーを持つ別のテーブルを持っています:

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.

明らかに私がそうするなら:

update A set id=lower(id);
update B set a_id=lower(a_id);

最初の更新で外部キー制約違反が発生します。

とにかく2つの更新を「同時に」実行する方法はありますか、またはこれに対処する別の方法をお勧めできますか?

4

2 に答える 2

0

制約を削除し、ON UPDATE CASCADE で制約を再作成します

次に、子テーブルが変更されない親テーブルで update ステートメントを実行します。

 ALTER  TTABLE b ADD CONSTARINT fk_const 
 FOREIGN KEY(a_id) REFERENCE  a (id) ON UPDATE CASCADE 

今すぐこの更新を実行してください

 update A set id=lower(id);
于 2012-10-17T05:25:29.937 に答える
0

最も簡単なアプローチは、制約を削除することです。

更新クエリを実行する

ここでも、外部キー制約を導入します。

于 2012-10-17T04:55:14.513 に答える