![]() |
---|
CREATE trigger TR_ATTRIBUTECATEGORY_UPDATE on dbo.ATTRIBUTECATEGORY after update not for replication as begin if update(TABLECATALOGID) begin if exists(select DELETED.ID from DELETED inner join INSERTED on INSERTED.ID = DELETED.ID where DELETED.TABLECATALOGID <> INSERTED.TABLECATALOGID and DELETED.TABLECATALOGID is not null) raiserror('The TABLECATALOGID column cannot be updated.', 13, 1) end if update(NAME) begin declare @ID uniqueidentifier declare @CHANGEDBYID uniqueidentifier if (select count(INSERTED.ID) from INSERTED inner join DELETED on DELETED.ID = INSERTED.ID where INSERTED.NAME <> DELETED.NAME) > 1 begin declare update_cursor cursor local fast_forward for SELECT INSERTED.ID, INSERTED.CHANGEDBYID from INSERTED inner join DELETED on DELETED.ID = INSERTED.ID where INSERTED.NAME <> DELETED.NAME open update_cursor; fetch next from update_cursor into @ID, @CHANGEDBYID; while @@FETCH_STATUS = 0 begin if @ID is not null exec dbo.USP_ATTRIBUTE_UPDATEATTRIBUTEQUERIES @ID, 1, @CHANGEDBYID; fetch next from update_cursor into @ID, @CHANGEDBYID; end close update_cursor; deallocate update_cursor; end else begin SELECT @ID = INSERTED.ID, @CHANGEDBYID = INSERTED.CHANGEDBYID from INSERTED inner join DELETED on DELETED.ID = INSERTED.ID where INSERTED.NAME <> DELETED.NAME; if @ID is not null exec dbo.USP_ATTRIBUTE_UPDATEATTRIBUTEQUERIES @ID, 1, @CHANGEDBYID; end end end |