我需要一个级联删除的例子。我的问题是,我在哪里添加它?在表格中我创建了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 - 将'。\ projekt \ wplaty'重命名为'。\ projekt#sql2-1300-6c'时出错(错误号:152)
答案 0 :(得分: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
设置重新定义它。
答案 1 :(得分:0)
实际上,您没有在表格上添加“ON DELETE CASCADE”。它是每个外键定义的一部分(或不是)。
答案 2 :(得分: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;
在一个声明中:
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;