cQuery := cCRLF + "CREATE TRIGGER SRAXEXP ON " + RetSQLName('SRA') + " AFTER UPDATE, DELETE "
cQuery += cCRLF + "AS "
cQuery += cCRLF + "BEGIN "
cQuery += cCRLF + " SET NOCOUNT ON; "
cQuery += cCRLF + " DECLARE @RECNO BIGINT, @MSEXP VARCHAR(8); "
cQuery += cCRLF + " IF EXISTS(SELECT 1 FROM DELETED) "
cQuery += cCRLF + " BEGIN "
cQuery += cCRLF + " DECLARE deleted_cursor CURSOR FOR "
cQuery += cCRLF + " SELECT R_E_C_N_O_, RA_XEXP FROM DELETED; "
cQuery += cCRLF + " OPEN deleted_cursor; "
cQuery += cCRLF + " FETCH NEXT FROM deleted_cursor INTO @RECNO, @MSEXP; "
cQuery += cCRLF + " WHILE @@FETCH_STATUS = 0 "
cQuery += cCRLF + " BEGIN "
cQuery += cCRLF + " IF @MSEXP IS NOT NULL AND @MSEXP != '' "
cQuery += cCRLF + " BEGIN "
cQuery += cCRLF + " UPDATE " + RetSQLName("SRA")
cQuery += cCRLF + " SET RA_XEXP = '' "
cQuery += cCRLF + " WHERE R_E_C_N_O_ = @RECNO "
cQuery += cCRLF + " AND RA_XEXP IS NOT NULL; "
cQuery += cCRLF + " END "
cQuery += cCRLF + " FETCH NEXT FROM deleted_cursor INTO @RECNO, @MSEXP; "
cQuery += cCRLF + " END "
cQuery += cCRLF + " CLOSE deleted_cursor; "
cQuery += cCRLF + " DEALLOCATE deleted_cursor; "
cQuery += cCRLF + " END "
cQuery += cCRLF + " IF EXISTS(SELECT 1 FROM INSERTED) AND EXISTS(SELECT 1 FROM DELETED) "
cQuery += cCRLF + " BEGIN "
cQuery += cCRLF + " UPDATE i "
cQuery += cCRLF + " SET RA_XEXP = '' "
cQuery += cCRLF + " FROM INSERTED i "
cQuery += cCRLF + " INNER JOIN DELETED d ON i.R_E_C_N_O_ = d.R_E_C_N_O_ "
cQuery += cCRLF + " WHERE d.RA_XEXP IS NOT NULL "
cQuery += cCRLF + " AND d.RA_XEXP != '' "
cQuery += cCRLF + " AND (i.RA_XEXP != d.RA_XEXP OR i.RA_XEXP IS NULL); "
cQuery += cCRLF + " END "
cQuery += cCRLF + "END; "
If TCSqlExec(cQuery) < 0
MsgInfo(TCSQLError())
EndIf