【发布时间】:2015-10-29 05:36:00
【问题描述】:
如果主表的实体被删除,如何从多个表中删除记录,因为约束应用于所有表
场景
让我给你一个场景:有一个名为Organization 或TblOrganization 的主表。该组织在名为tblBranch 的分支表中有分支,这些分支在表tblApplication 中有多个应用程序。这些应用程序又被存储在tblUsers 中的多个用户使用。
我想要的是:当我删除一个组织时,与它相关的所有分支、应用程序和用户也必须删除。
如何在 asp.net 网络表单中的按钮单击上应用它?
现在这是我的删除功能,非常简单
Public void Delete(int? id)
{
var str = ”DELETE FROM tblOrganization WHERE organizationId=”+ id ;
}
我的表格是这样的:
CREATE TABLE tblOrganization
(
OrganizationId int,
OrganizationName varchar(255)
);
CREATE TABLE tblApplication
(
ApplicationId int,
OrganizationId int,
ApplicationName varchar(255)
);
CREATE TABLE tblBranches
(
BranchId int,
OrganizationId int,
BranchName varchar (255)
);
CREATE TABLE tblUsers
(
userId int,
OrganizationId int,
UserName varchar(255)
);
像这样在所有表上应用约束
ALTER TABLE [dbo].[tblBranchs] WITH CHECK
ADD CONSTRAINT [FK_tblBranchs_tblOrganization]
FOREIGN KEY([OrganizationId])
REFERENCES [dbo].[tblOrganization] ([OrganizationId])
【问题讨论】:
-
我不确定它的相关性,但您是否查看过“ON DELETE CASCADE”?
-
SQL Injection alert - 您应该不将您的 SQL 语句连接在一起 - 使用 参数化查询 来避免 SQL 注入
-
让我研究一下
-
您不能在 ASP.NET 中“应用”它 - 您需要在基础数据库中定义 外键约束 以将
ON DELETE CASCADE设置为 on -
@marc_s 亲爱的,这不是问题,我明白了,谢谢你提醒我