2 つのテーブルを作成しました。1 つ目は 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
マガジン内の総ページ数を保持する列名 TotalPages を持っています
ここに MagzinePage テーブルがあります。
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
magzinePage テーブルにデータを挿入するトリガーを作成しました。これは、テーブルに挿入されたレコードの総数を ID に対して処理できるトリガーです。
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 MagzineID=@MagzineID Group By MagzinePage.MagzineID)
Update Magzine Set TotalPages=@TotalPages Where ID= @MagzineID
PRINT 'AFTER INSERT trigger fired.'
GO
ここで、magzinePage テーブルのレコードが削除されるたびに、Magzine テーブルの合計ページ数を減らすのに役立つトリガーを作成したいと考えています。
そのための方法を見つけてください。ありがとう。