У меня есть следующая настройка таблицы.Каскадные удаления в SQL Sever 2008 не работают
Bag
|
+-> BagID (Guid)
+-> BagNumber (Int)
BagCommentRelation
|
+-> BagID (Int)
+-> CommentID (Guid)
BagComment
|
+-> CommentID (Guid)
+-> Text (varchar(200))
BagCommentRelation имеет внешние ключи к сумке и сумке.
Итак, я включил каскадные удаления для обоих внешних ключей, но когда я удаляю сумку, она не удаляет строку Comment.
Нужно ли срабатывать триггер? Или я чего-то не хватает?
(Я использую SQL Server 2008)
Примечание: Проводка запрошенный SQL. Это определение таблицы BagCommentRelation. (У меня был типа неправильно bagID (я думал, что это была справы, но это целое).)
CREATE TABLE [dbo].[Bag_CommentRelation](
[Id] [int] IDENTITY(1,1) NOT NULL,
[BagId] [int] NOT NULL,
[Sequence] [int] NOT NULL,
[CommentId] [int] NOT NULL,
CONSTRAINT [PK_Bag_CommentRelation] PRIMARY KEY CLUSTERED
(
[BagId] ASC,
[Sequence] ASC
)WITH (PAD_INDEX = OFF, STATISTICS_NORECOMPUTE = OFF, IGNORE_DUP_KEY = OFF, ALLOW_ROW_LOCKS = ON, ALLOW_PAGE_LOCKS = ON) ON [PRIMARY]
) ON [PRIMARY]
GO
ALTER TABLE [dbo].[Bag_CommentRelation] WITH CHECK ADD CONSTRAINT [FK_Bag_CommentRelation_Bag] FOREIGN KEY([BagId])
REFERENCES [dbo].[Bag] ([Id])
ON DELETE CASCADE
GO
ALTER TABLE [dbo].[Bag_CommentRelation] CHECK CONSTRAINT [FK_Bag_CommentRelation_Bag]
GO
ALTER TABLE [dbo].[Bag_CommentRelation] WITH CHECK ADD CONSTRAINT [FK_Bag_CommentRelation_Comment] FOREIGN KEY([CommentId])
REFERENCES [dbo].[Comment] ([CommentId])
ON DELETE CASCADE
GO
ALTER TABLE [dbo].[Bag_CommentRelation] CHECK CONSTRAINT [FK_Bag_CommentRelation_Comment]
GO
Строка в таблице удаления, но строки в комментариях таблице не.
В нашей таблице комментариев есть много разных типов комментариев. В некоторых таблицах используются гиды, некоторые функции для ПК. Кроме того, в одном пакете может быть много комментариев. Похоже, мне нужно выбрать либо листы, либо целые числа, а FK перейти непосредственно из моего стола. – Vaccano