私は新しい問題を発見しました: ClassesとStudentsの 2 つのテーブルがあります。生徒は[ClassID]列でクラスを参照します。クラスには[Count]という名前の列があり、参照している学生の数を格納しています。学生テーブルの AFTER INSERT,DELETEトリガーを介して更新しようとしています。次のような単純なCALC_COUNTプロシージャを作成しました。
CREATE PROCEDURE [dbo].[CALC_COUNT]
@classid INT
AS
BEGIN
UPDATE classes SET [Count] = (SELECT COUNT(Id) FROM students WHERE [ClassID] = @classid);
END
RETURN 0
トリガー内で使用します
CREATE TRIGGER [MONITOR_STUDENTS_SCHEMA_TRIGGER]
ON [dbo].[students]
AFTER DELETE, INSERT
AS
BEGIN
UPDATE [dbo].[classes]
SET studentsschemarev +=1 FROM inserted;
CALC_COUNT(SELECT [ClassID] FROM inserted UNION SELECT [ClassID] FROM deleted);
UPDATE [dbo].[stats] SET students_schema_rev += 1;
END
しかし、うまくいきません。トリガーのSELECT文で行ごとにプロシージャを実行する方法が必要だと思いますが、方法がわかりません。
SQL Server 2012 LocalDB、SQL Server 2008 との互換モード。