다음 표가 설정되어 있습니다.SQL Sever 2008의 계단식 삭제가 작동하지 않습니다.
Bag
|
+-> BagID (Guid)
+-> BagNumber (Int)
BagCommentRelation
|
+-> BagID (Int)
+-> CommentID (Guid)
BagComment
|
+-> CommentID (Guid)
+-> Text (varchar(200))
BagCommentRelation에는 외래 키와 BagComment가 있습니다.
그래서 외래 키에 대한 계단식 삭제를 설정했지만 가방을 삭제해도 메모 행은 삭제되지 않습니다.
트리거를 트리거해야하나요? 또는 나는 무엇인가 놓치고 있냐?
주 (I는 SQL Server 2008을 사용하고 있습니다) : 게시는 SQL을 요청했다. 이것은 BagCommentRelation 테이블의 정의입니다. (필자는 bagID의 잘못 (나는 그것이 GUID했지만 그것이 int이며 생각)의 유형을했다.)
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
를이 테이블에있는 행은 코멘트 테이블의 행하지 않지만 삭제합니다.
댓글 테이블에는 다양한 유형의 댓글이 있습니다. 일부 테이블은 Guids를 사용하고 일부 PK는 int를 사용합니다. 또한 하나의 가방에는 많은 의견이있을 수 있습니다. guids 또는 int 중 하나를 고르고 FK가 내 가방 테이블에서 직접 이동해야하는 것처럼 들립니다. – Vaccano