1

カスケード削除の例が必要でした。私の質問は、どこに追加するのですか? PK を作成するテーブルで、またはこの PK が FK としてそこにある他のテーブルで?

「alter table」を使用して「on delete cascade」を既存のテーブルに追加できますか? 例を教えてください。

phpMyAdmin を使用して @edit MYSQL

@編集 2

よさそうですか?

alter table wplaty
  drop foreign key pesel,
  add constraint pesel foreign key (pesel)
    references baza_osob(pesel) on delete cascade on update restrict;

私の親テーブル = baza_osob 私の子テーブル = wplaty

PKもペセル、FKもペセル。

@edit3 エラーが発生しました:

#1025 - '.\projekt\wplaty' から '.\projekt#sql2-1300-6c' への名前変更エラー (errno: 152)

4

3 に答える 3

3

カスケード ディレクティブは「子」テーブルに入ります。

create table parent (
   id int primary key
)

create table child (
   id int primary key
   parent_id int,
   foreign key (parent_id) references parent (id)
      on delete cascade
)

外部キーを変更してon設定を変更しようとしたことは一度もありませんが、最悪の場合、既存の FK を削除して、新しいon設定で再定義するだけです。

于 2012-12-17T18:41:21.193 に答える
0

外部キーに対してこのオプションを有効にする必要があります。外部キーを作成したときにこのオプションを追加しなかった場合は、再作成する必要があります。

alter table <table> drop foreign key <fk name>;

alter table <table> add constraint <fk name> foreign key (<column name>)
  references <ref tble>(<ref column) on delete cascade on update restrict;

1つのステートメントで:

alter table <table>
  drop foreign key <old fk name>,
  add constraint <new fk name> foreign key (<column name>)
    references <ref tble>(<ref column) on delete cascade on update restrict;
于 2012-12-17T18:51:05.950 に答える
0

実際には、テーブルに「ON DELETE CASCADE」を追加しません。これは、各外部キー定義の一部です (またはそうではありません)。

于 2012-12-17T18:42:26.797 に答える