가 나는 좁은 방은 MagzinePage 표입니다 여기에 magzine자식 테이블에서 한 레코드 삭제시 SQL에서 삭제 트리거를 만드는 방법 부모 테이블의 레코드 개수를 업데이트 하시겠습니까?
에 전체 페이지의 수에 대한 보유 및 열 이름 TotalPages을 가지고 magzine
CREATE TABLE [dbo].[Magzine](
[ID] [int] IDENTITY(1,1) NOT NULL,
[Name] [nvarchar](350) NULL,
[MagzineType] [int] NOT NULL,
[TotalPages] [int] NOT NULL,
[DateCreated] [datetime] NOT NULL,
[Active] [bit] NOT NULL, CONSTRAINT [PK_tblMagzine] PRIMARY KEY CLUSTERED (
[ID] 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
의 두 개의 테이블을 만들었습니다.
CREATE TABLE [dbo].[MagzinePage](
[ID] [int] IDENTITY(1,1) NOT NULL,
[MagzineID] [int] NOT NULL,
[Title] [nvarchar](255) NULL,
[SubTitle] [nvarchar](255) NULL,
[Photo] [nvarchar](255) NULL,
[Description] [nvarchar](2000) NULL,
[DateCreated] [datetime] NOT NULL,
[CreatedBy] [nvarchar](25) NOT NULL,
[Active] [bit] NOT NULL,
[IsMapped] [bit] NULL, CONSTRAINT [PK_tblPage] PRIMARY KEY CLUSTERED (
[ID] 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
I는 여기 ID 대해 표에 삽입 총 레코드 수 돌볼 수 magzinePage 테이블 데이터의 삽입에 트리거를 만들었다는
Alter TRIGGER trgAfterInsert ON [dbo].[MagzinePage]
FOR INSERT
AS
Declare @MagzineID int;
Declare @TotalPages int;
Set @MagzineID= (Select Top 1 MagzineID From MagzinePage Order By ID Desc)
Set @TotalPages = (Select Count(MagzineID) from MagzinePage Where [email protected] Group By MagzinePage.MagzineID)
Update Magzine Set [email protected] Where ID= @MagzineID
PRINT 'AFTER INSERT trigger fired.'
GO
지금 트리거 인 MagzinePage 테이블의 레코드가 삭제 될 때마다 Magzine 테이블의 총 페이지 수를 줄이는 데 도움이되는 트리거를 만들고 싶습니다.
친절하게도 그 방법을 생각해보십시오. 감사합니다. . 나는 'Magzine'의 맞춤법을 유지 한
create view dbo.vwMagzinePageCount
with schemabinding
as
select [MagzineID], count_big(*) as TotalPages
from dbo.[MagzinePage]
group by [MagzineID];
go
create unique clustered index cdxMagzinePageCount
on dbo.vwMagzinePageCount (MagzineID);
go
:
현재 삽입 트리거가 끊어졌습니다. 하나의 '삽입'으로 여러 잡지의 행을 만들 수 있지만 트리거는 하나만 업데이트합니다. 또한 왜 카운트를 저장할 필요가 있다고 생각합니까? 데이터 검색 중에 (예 :'SELECT') 카운트를 수행하면 항상 정확합니다. –
@Damien_The_Unbelieve 나는이 방아쇠가 잘 작동한다고 생각하는데, 나는 magzine에 관한 모든 세부 사항을 표시하는 격자를 보여야하기 때문에 카운트가 필요합니다. 오래 걸리는 것보다 매번 데이터를 가져 오는 것이 좋습니다. 무엇을 제안합니까? –
방아쇠가 끊어진 이유를 보여주는 답변을 끝까지 추가했습니다. –