Одна таблица имеет имя «Этапы», каждый этап может иметь детей от 0 до бесконечности. В таблице «Этапы» есть столбец с именем «Родитель». Этот столбец является иностранным ключом для той же таблицы «Этапы».Удаление каскадного дерева в MS SQL Server Express 2005
Как бы сделать каскадное удаление для этого дерева? Я хочу, чтобы при удалении любой строки в этой таблице, автоматически удалять все свои ребенок и своих ребенок ребенок ...
С помощью следующего запроса
GO
IF NOT EXISTS (SELECT * FROM sys.foreign_keys WHERE object_id = OBJECT_ID(N'[dbo].[FK_Stage_Stage]') AND parent_object_id = OBJECT_ID(N'[dbo].[Stage]'))
ALTER TABLE [dbo].[Stage] WITH CHECK ADD CONSTRAINT [FK_Stage_Stage] FOREIGN KEY([parent])
REFERENCES [dbo].[Stage] ([id]) ON DELETE CASCADE
GO
ALTER TABLE [dbo].[Stage] CHECK CONSTRAINT [FK_Stage_Stage]
GO
Я получаю эту ошибку
Msg 1785, Level 16, State 0, Line 2
Introducing FOREIGN KEY constraint 'FK_Stage_Stage' on table 'Stage' may cause cycles or multiple cascade paths. Specify ON DELETE NO ACTION or ON UPDATE NO ACTION, or modify other FOREIGN KEY constraints.
Msg 1750, Level 16, State 0, Line 2
Could not create constraint. See previous errors.
Msg 4917, Level 16, State 0, Line 1
Constraint 'FK_Stage_Stage' does not exist.
Msg 4916, Level 16, State 0, Line 1
Could not enable or disable the constraint. See previous errors.
Как это сделать с помощью MS SQL Enterprise Manager 2005 Express? –
Это работает только для различения таблиц. Когда ссылка на таблицу сама по себе не работает –
@ Evl-ntnt, ее работы для таблиц, которые имеют ссылку на себя. Можете ли вы предоставить информацию о том, что вы сделали, а что точно не работает? –