【发布时间】:2013-08-01 08:25:22
【问题描述】:
我有以下用于 SQL Server 2012 的 DDL:
CREATE TABLE Subject (
[SubjectId] INT IDENTITY (1, 1) NOT NULL,
[Name] NVARCHAR (50) Not NULL,
CONSTRAINT [PK_Subject] PRIMARY KEY CLUSTERED ([SubjectId] ASC)
)
CREATE TABLE Topic (
[TopicId] INT IDENTITY (1, 1) NOT NULL,
[Name] NVARCHAR (50) NOT NULL,
[SubjectId] INT NOT NULL,
CONSTRAINT [PK_Topic] PRIMARY KEY CLUSTERED ([TopicId] ASC)
)
ALTER TABLE [Topic] WITH CHECK ADD CONSTRAINT [FK_TopicSubject]
FOREIGN KEY([SubjectId]) REFERENCES [Subject] ([SubjectId])
ON DELETE NO ACTION
如果子级中存在对父级的引用,我想要 SQL Server 阻止我删除父级?例如,如果有 SubjectId 为 3 的子项,我希望在 Subject 中删除 subjectID=3 失败。
对此我不清楚,似乎无法找到答案。我是否需要添加“DELETE NO ACTION”或者我可以不删除这三个词。
我问这个问题就像在一个类似的问题中一样,我有一个回答,我应该在父母身上定义一个触发器。但是我认为如果存在孩子,只需定义外键就可以阻止我删除父母。
【问题讨论】:
标签: sql sql-server sql-server-2012