背景:使用SQL Server数据库,创建了两张主表和一张关系表,当删除主表其中的一个字段时,需要将关系表中的相应字段一并删除 。表关系如图所示
方法:
创建关系表时,将外键设置成 ON DELETE CASCADE ON UPDATE CASCADE
CREATE TABLE CategoryCellMapping(
categoryCellId int IDENTITY ,
categoryMappingId int constraint FK_CategoryId foreign key
references Category(categoryId) ON DELETE CASCADE ON UPDATE CASCADE, --外键
cellMappingId int constraint FK_CellId foreign key
references Cell(cellId) ON DELETE CASCADE ON UPDATE CASCADE, --外键
constraint PK_CategoryId_CellId primary key (categoryCellId) --id_cat_cell 作为主键
)
当我们删除主表的字段时,sql server会根据外键依赖关系把关系表的记录也删除。
delete from Category where categoryId = 1;
同理当我们更新主表字段时,对应的关系表也会随之更新
参考文献: