TR_APPUSER_ARCHIVE

Definition

Copy


            create trigger dbo.TR_APPUSER_ARCHIVE
                on dbo.APPUSER
                after insert, update
                not for replication
                as begin

                    declare @APPUSERID uniqueidentifier;
                    declare @DISPLAYNAME nvarchar(255);
                    declare @CHANGEAGENT uniqueidentifier;
                    declare @TIMESTAMP datetime;

                    select 
                        @APPUSERID = ID,
                        @DISPLAYNAME = DISPLAYNAME,
                        @CHANGEAGENT = CHANGEDBYID,
                        @TIMESTAMP = DATECHANGED 
                    from INSERTED
                    where ISSYSTEM = 0;

                    -- the trigger fires even when no rows are updated
                    if @APPUSERID is not null        
                        if exists(select 1 from dbo.APPUSERARCHIVE where APPUSERID = @APPUSERID)
                            update 
                                ARCHIVE 
                            set
                                ARCHIVE.DISPLAYNAME = @DISPLAYNAME,
                                ARCHIVE.CHANGEDBYID = @CHANGEAGENT,
                                ARCHIVE.DATECHANGED = @TIMESTAMP 
                            from 
                                dbo.APPUSERARCHIVE ARCHIVE
                            where 
                                @APPUSERID = ARCHIVE.APPUSERID;
                        else
                            insert into dbo.APPUSERARCHIVE(
                                APPUSERID, 
                                DISPLAYNAME,
                                ADDEDBYID, 
                                CHANGEDBYID, 
                                DATEADDED, 
                                DATECHANGED)
                            values (
                                @APPUSERID
                                @DISPLAYNAME
                                @CHANGEAGENT
                                @CHANGEAGENT
                                @TIMESTAMP,
                                @TIMESTAMP);

                end