SQL表数据结构,这是错误的吗?使用级联删除

SQL表数据结构,这是错误的吗?使用级联删除,sql,sql-delete,cascading-deletes,Sql,Sql Delete,Cascading Deletes,以下是我遇到问题的3个表格: 表:opportunity-包含各种opportunity(职务)描述 表:Opportunities_申请人-容纳各种申请机会的申请人。一个申请人只能申请一个机会,但是一个机会可以有多个申请人 表:Opportunities\u Category-保存类别名称和类型。1类可能与许多机会相关 我正在尝试执行级联删除当删除一个Opportunity类别时,它将删除相应的Opportunity和这些Opportunity的申请者 这种结构合适吗?还是应该以不同的方式

以下是我遇到问题的3个表格:

  • 表:opportunity-包含各种opportunity(职务)描述

  • 表:Opportunities_申请人-容纳各种申请机会的申请人。一个申请人只能申请一个机会,但是一个机会可以有多个申请人

  • 表:Opportunities\u Category-保存类别名称和类型。1类可能与许多机会相关

我正在尝试执行级联删除当删除一个Opportunity类别时,它将删除相应的Opportunity和这些Opportunity的申请者

这种结构合适吗?还是应该以不同的方式设置数据库?在删除Opportunity类别时,应如何设置我的表关系以使级联删除生效

我应该使用级联删除吗

create table Opportunities_Category
(   
CategoryID          int identity(1,1)       not null
    constraint PK_CategoryID primary key clustered,         
[Name]              varchar(150)            not null,
[Type]              varchar(100)            not null --Pay, Volunteer, Volunteer Yearly
)

create table Opportunities
(
OpportunityID       int identity(1,1)   not null
    constraint PK_OpportunityID primary key clustered,
CategoryID          int                     not null
    constraint FK_CategoryID foreign key references Opportunities_Category(CategoryID) ON DELETE CASCADE,       
Title               varchar(300)            not null,
PostingDate         datetime                not null,
ClosingDate         datetime                not null,
Duration            varchar(150)            not null, --Part Time, Full Time, Seasonal, Contract
Compensation        varchar(150)            not null, --Hourly, Volunteer, Salary
[Description]       varchar(5000)           not null,
Qualifications      varchar(5000)           not null,
Show                int                     not null
)

create table Opportunities_Applicant
(
ApplicantID             int identity(1,1)   not null
    constraint PK_ApplicantID primary key clustered,
OpportunityID           int                 not null
    constraint FK_OpportunityID foreign key references Opportunities(OpportunityID) ON DELETE CASCADE,
[First]                 varchar(150)        not null,
[Last]                  varchar(150)        not null,
Phone                   varchar(20)         not null,
Cell                    varchar(20)         not null,
EMail                   varchar(200)        not null,
CoverLetterResume       varchar(300)        null,
[Timestamp]             datetime            not null    
)   

使用检查添加约束[FK_Opportunities Category_Opportunities]外键([CategoryID])更改表[dbo].[Opportunities] 参考文献[dbo].[Opportunities\u Category]([CategoryID]) 关于删除级联 去


祝你好运

使用检查添加约束[FK_Opportunities Category_Opportunities]外键([CategoryID])更改表[dbo].[Opportunities] 参考文献[dbo].[Opportunities\u Category]([CategoryID]) 关于删除级联 去


祝你好运

我的表格设置正确:

昨天,我一直在尝试:从CategoryID=@CategoryID的Opportunities中删除。这只是从Opportunity和Opportunity申请人中删除记录


今天,我改为:从Opportunities_Categoies中删除,其中CategoryID=@CategoryID,并且所有3个表都在删除它们相应的记录

我的表格设置正确:

昨天,我一直在尝试:从CategoryID=@CategoryID的Opportunities中删除。这只是从Opportunity和Opportunity申请人中删除记录


今天,我改为:从Opportunities_Categoies中删除,其中CategoryID=@CategoryID,并且所有3个表都在删除它们相应的记录

这不是我正在做的同一件事吗。。。“constraint FK_CategoryID外键引用Opportunities_CategoryID(CategoryID)ON DELETE CASCADE”在Opportunities表中,相同的事情,抱歉,没有向右滚动以查看DELETE CASCADE…这不是我正在做的相同事情吗。。。在Opportunities表中的“constraint FK_CategoryID外键引用删除级联上的Opportunities_Category(CategoryID)”,与此相同,抱歉,没有向右滚动以查看删除级联。。。