如果 Main Table 实体被删除,则使用 FOREIGN KEY 约束删除所有记录
Delete All the records Using FOREIGN KEY Constraints if Main Table Entity is deleted
如果主要 table 的实体被删除,如何从多个 table 中删除记录,因为约束应用于所有
场景
让我给你一个场景:有一个名为 Organization
或 TblOrganization
的主要 table。该组织在分支 table 中有分支 tblBranch
,这些分支在 table tblApplication
中有多个应用程序。这些应用程序又被存储在 tblUsers
.
中的多个用户使用
我想要的是:当我删除一个组织时,与它相关的所有分支、应用程序和用户也必须一并删除。
如何在 asp.net 网络表单中单击按钮时应用它?
现在这是我的删除功能,非常简单
Public void Delete(int? id)
{
var str = ”DELETE FROM tblOrganization WHERE organizationId=”+ id ;
}
我的 table 看起来像这样:
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)
);
像这样
对所有table应用约束
ALTER TABLE [dbo].[tblBranchs] WITH CHECK
ADD CONSTRAINT [FK_tblBranchs_tblOrganization]
FOREIGN KEY([OrganizationId])
REFERENCES [dbo].[tblOrganization] ([OrganizationId])
你不能在 ASP.NET 中 "apply" - 这是一个 数据库问题 并且你需要更改你的外键约束以包含 ON DELETE CASCADE
- 像这样:
ALTER TABLE [dbo].[tblBranchs] WITH CHECK
ADD CONSTRAINT [FK_tblBranchs_tblOrganization]
FOREIGN KEY([OrganizationId])
REFERENCES [dbo].[tblOrganization] ([OrganizationId])
ON DELETE CASCADE
这意味着:如果删除 tblOrganization
中的一行,该删除也会 级联 向下进入 tblBranchs
table , 删除所有引用该组织的行。您可以对多个外键约束进行这些 ON DELETE CASCADE
设置,直至 tblUsers
table。
您需要将 ON DELETE CASCADE
添加到 tblBranch、tblApplication 和 tblUsers 的约束中:
ALTER TABLE [dbo].[tblBranchs] WITH CHECK
ADD CONSTRAINT [FK_tblBranchs_tblOrganization]
FOREIGN KEY([OrganizationId])
REFERENCES [dbo].[tblOrganization] ([OrganizationId])
ON DELETE CASCADE
ALTER TABLE [dbo].[tblApplication] WITH CHECK
ADD CONSTRAINT [FK_tblApplication_tblBranchs]
FOREIGN KEY([BranchId])
REFERENCES [dbo].[tblBranchs] ([BranchId])
ON DELETE CASCADE
ALTER TABLE [dbo].[tblUsers] WITH CHECK
ADD CONSTRAINT [FK_tblUsers_tblApplication]
FOREIGN KEY([ApplicationId])
REFERENCES [dbo].[tblApplication] ([ApplicationId])
ON DELETE CASCADE
现在如果您删除一个组织,数据库引擎会自动删除所有相关的子记录:
如果您删除一个组织,所有相关的记录都会从 tblBranch、tblApplication 和 tblUsers 中删除。
如果删除一个分支,tblApplication 和 tblUsers 的所有相关记录都将被删除。
如果您删除一个应用程序,所有相关的记录都会从 tblUsers 中删除。
如果您删除一个用户,则不会删除任何其他用户。
如果主要 table 的实体被删除,如何从多个 table 中删除记录,因为约束应用于所有
场景
让我给你一个场景:有一个名为 Organization
或 TblOrganization
的主要 table。该组织在分支 table 中有分支 tblBranch
,这些分支在 table tblApplication
中有多个应用程序。这些应用程序又被存储在 tblUsers
.
我想要的是:当我删除一个组织时,与它相关的所有分支、应用程序和用户也必须一并删除。
如何在 asp.net 网络表单中单击按钮时应用它?
现在这是我的删除功能,非常简单
Public void Delete(int? id)
{
var str = ”DELETE FROM tblOrganization WHERE organizationId=”+ id ;
}
我的 table 看起来像这样:
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)
);
像这样
对所有table应用约束ALTER TABLE [dbo].[tblBranchs] WITH CHECK
ADD CONSTRAINT [FK_tblBranchs_tblOrganization]
FOREIGN KEY([OrganizationId])
REFERENCES [dbo].[tblOrganization] ([OrganizationId])
你不能在 ASP.NET 中 "apply" - 这是一个 数据库问题 并且你需要更改你的外键约束以包含 ON DELETE CASCADE
- 像这样:
ALTER TABLE [dbo].[tblBranchs] WITH CHECK
ADD CONSTRAINT [FK_tblBranchs_tblOrganization]
FOREIGN KEY([OrganizationId])
REFERENCES [dbo].[tblOrganization] ([OrganizationId])
ON DELETE CASCADE
这意味着:如果删除 tblOrganization
中的一行,该删除也会 级联 向下进入 tblBranchs
table , 删除所有引用该组织的行。您可以对多个外键约束进行这些 ON DELETE CASCADE
设置,直至 tblUsers
table。
您需要将 ON DELETE CASCADE
添加到 tblBranch、tblApplication 和 tblUsers 的约束中:
ALTER TABLE [dbo].[tblBranchs] WITH CHECK
ADD CONSTRAINT [FK_tblBranchs_tblOrganization]
FOREIGN KEY([OrganizationId])
REFERENCES [dbo].[tblOrganization] ([OrganizationId])
ON DELETE CASCADE
ALTER TABLE [dbo].[tblApplication] WITH CHECK
ADD CONSTRAINT [FK_tblApplication_tblBranchs]
FOREIGN KEY([BranchId])
REFERENCES [dbo].[tblBranchs] ([BranchId])
ON DELETE CASCADE
ALTER TABLE [dbo].[tblUsers] WITH CHECK
ADD CONSTRAINT [FK_tblUsers_tblApplication]
FOREIGN KEY([ApplicationId])
REFERENCES [dbo].[tblApplication] ([ApplicationId])
ON DELETE CASCADE
现在如果您删除一个组织,数据库引擎会自动删除所有相关的子记录:
如果您删除一个组织,所有相关的记录都会从 tblBranch、tblApplication 和 tblUsers 中删除。
如果删除一个分支,tblApplication 和 tblUsers 的所有相关记录都将被删除。
如果您删除一个应用程序,所有相关的记录都会从 tblUsers 中删除。
如果您删除一个用户,则不会删除任何其他用户。