我需要在一个表中的时间表,以减少一个计数器,当有在入学表中插入:如何创建触发器来减少计数器,触发器有什么问题?
CREATE TRIGGER [UpdateEnrollmentsTrigger]
ON [TBLENROLLMENT_ENR]
FOR INSERT
AS
BEGIN
DECLARE @ScheduleCode NVARCHAR
DECLARE @TotalSlots INT
IF EXISTS(SELECT SCH_CODE FROM inserted)
BEGIN
SELECT @ScheduleCode = SCH_CODE FROM inserted
SELECT @TotalSlots = SCH_TOTALSLOTS FROM TBLSCHEDULES_SCH
WHERE SCH_CODE = @ScheduleCode
UPDATE TBLSCHEDULES_SCH
SET SCH_FREESLOTS = @TotalSlots - 1
WHERE SCH_CODE = @ScheduleCode
END
END
当我试图创建这个触发器,VS12的查询窗口说:
SQL46010 :: Incorrect syntax near ].
提前致谢。
我认为触发器被触发为插入每一行。它是如何工作的? –
@zerazobz它不这样工作。触发器在整个INSERT事务中触发一次。所有在INSERTED伪表上插入的行,所以您需要准备好处理多于一行的行,并假定它是一个具有多行行的表(除非该表上的每个插入操作总是插入一行) – Lamak