TR_ATTRIBUTECATEGORY_UPDATE

Definition

Copy


                    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