PHP.30-TP框架商城应用实例-后台6-商品会员价格删除-外键,级联操作
商品会员价格删除
需求:当删除一件商品时,这件商品对应的会员价格也应该从会员价格表{price,level_id,goods_id}中删除掉。
有两种删除方法
1、在钩子函数_before_delete()中删除会员价格【不需修改表结构】
根据商品id(goods_id)进行更改
2、可以使用MYSQL中自带外键约束来实现{级联删除}【前提:只有InnoDB引擎支持】
外键约束和级联操作【级联操作(on delete|on action|on update):当主表更改时,从表(具有外键)跟从更改】
给p39_member_price添加外键格式:
alter table 表名 add constraint 外键名 foreign key (外键字段) references 关联表名 (关联字段) [级联操作];
ALTER TABLE p39_member_price ADD CONSTRAINT mprice_goods FOREIGN KEY (goods_id) REFERENCES p39_goods (id) ON DELETE CASCADE;
或可建表时添加:建表语句
drop table if exists p39_member_price; create table p39_member_price ( price decimal(10,2) not null comment '会员价格', level_id mediumint unsigned not null comment '级别Id', goods_id mediumint unsigned not null comment '商品Id', foreign key(goods_id) references p39_goods(id) on delete cascade, key level_id(level_id), key goods_id(goods_id) )engine=InnoDB default charset=utf8 comment '会员价格';