在级联删除 - 在我来补充它(On delete cascade - where I have to

2019-10-17 11:48发布

我需要级联的一个例子删除。 我的问题是,我在哪里增加吗? 在该表中,我创建PK,或者在其他表,其中该PK坐在那里FK?

我可以使用“ALTER TABLE”添加“ON DELETE CASCADE”,以现有的表? 一个例子吗?

@edit MYSQL,使用phpMyAdmin

@edit 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是PESEL,FK是PESEL为好。

@ EDIT3遇到错误:

#1025 - 上的重命名错误到(错误:152) '\ PROJEKT \ wplaty。' '\ PROJEKT#sql2-1300-6c'。

Answer 1:

级联指令进入“子”表,如

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
)

从未尝试过做一个外键的ALTER改变其on设置,但最坏的情况下,您只需删除现有的FK并重新定义其与新on设置到位。



Answer 2:

你居然不添加对表“ON DELETE CASCADE”。 这是每一个外键定义的一部分(或没有)。



Answer 3:

您需要启用这个选项为外键。 如果您没有添加在创建外键这个选项,那么你应该重新创建。

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;

在一个语句:

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;


文章来源: On delete cascade - where I have to add it