0
我有两个表:当我删除SQL Server中的父行时,如何删除子行?
CREATE TABLE [dbo].[AdminTest] (
[AdminTestId] INT IDENTITY (1, 1) NOT NULL,
[Title] NVARCHAR (100) NOT NULL,
CONSTRAINT [PK_AdminTest] PRIMARY KEY CLUSTERED ([AdminTestId] ASC)
);
GO
CREATE NONCLUSTERED INDEX [Test_ExamId_IX]
ON [dbo].[AdminTest]([ExamId] ASC);
CREATE TABLE [dbo].[AdminTestQuestion] (
[AdminTestQuestionId] INT IDENTITY (1, 1) NOT NULL,
[AdminTestId] INT NOT NULL,
[QuestionUId] UNIQUEIDENTIFIER NOT NULL,
CONSTRAINT [PK_AdminTestQuestion] PRIMARY KEY CLUSTERED ([AdminTestQuestionId] ASC),
CONSTRAINT [FK_AdminTestQuestionAdminTestId] FOREIGN KEY ([AdminTestId]) REFERENCES [dbo].[AdminTest] ([AdminTestId])
);
GO
CREATE NONCLUSTERED INDEX [AdminTestQuestion_AdminTestId_IX]
ON [dbo].[AdminTestQuestion]([AdminTestId] ASC);
是否有某种方式,我可以改变表的定义,这样,当我删除AdminTest一排,然后在AdminTestQuestions该测试中的所有子行被删除?
这会将子表中的删除操作传播给父表,但在父表中删除A记录时会发生什么? – 2014-09-28 14:51:05
@ M.Ali不,它会从父母传播给有约束的孩子。如果父母被删除,孩子也被删除。例如,[this SQLfiddle](http://sqlfiddle.com/#!3/84375/1)显示父子在删除时保留,而答案中的小提琴显示传播父 - >子。 – 2014-09-28 14:52:45