我需要级联的一个例子删除。 我的问题是,我在哪里增加吗? 在该表中,我创建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'。
级联指令进入“子”表,如
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
设置到位。
你居然不添加对表“ON DELETE CASCADE”。 这是每一个外键定义的一部分(或没有)。
您需要启用这个选项为外键。 如果您没有添加在创建外键这个选项,那么你应该重新创建。
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;