AS
DECLARE VARIABLE USUARIO_ID INTEGER;
BEGIN
  IF(NEW.PROFISSIONAL_ID > 0) THEN
  BEGIN
    :USUARIO_ID = COALESCE((SELECT T.USUARIO_ID FROM TBMEDICO T WHERE T.ID = NEW.PROFISSIONAL_ID), 0);
    IF(:USUARIO_ID > 0) THEN
    BEGIN
        INSERT INTO TBCALENDARIO_EVENTO_PART (USUARIO_ID, STATUS, CALENDARIO_EVENTO_ID)
        VALUES (:USUARIO_ID, 1, NEW.ID);
    END
  END
END;

AS
DECLARE VARIABLE USUARIO_ID INTEGER;
DECLARE VARIABLE USUARIO_ID_OLD INTEGER;
BEGIN
  IF(NEW.PROFISSIONAL_ID IS DISTINCT FROM OLD.PROFISSIONAL_ID) THEN
  BEGIN
    IF(NEW.PROFISSIONAL_ID > 0) THEN
      BEGIN
        :USUARIO_ID = COALESCE((SELECT T.USUARIO_ID FROM TBMEDICO T WHERE T.ID = NEW.PROFISSIONAL_ID), 0);
        IF(:USUARIO_ID > 0) THEN
        BEGIN
            UPDATE OR INSERT INTO TBCALENDARIO_EVENTO_PART (USUARIO_ID, STATUS, CALENDARIO_EVENTO_ID)
            VALUES (:USUARIO_ID, 1, NEW.ID)
            MATCHING(USUARIO_ID, CALENDARIO_EVENTO_ID);
        END
      END
      IF(OLD.PROFISSIONAL_ID > 0) THEN
      BEGIN
         :USUARIO_ID_OLD = COALESCE((SELECT T.USUARIO_ID FROM TBMEDICO T WHERE T.ID = OLD.PROFISSIONAL_ID), 0);
        IF(:USUARIO_ID_OLD > 0) THEN
        BEGIN
           DELETE FROM TBCALENDARIO_EVENTO_PART WHERE USUARIO_ID = :USUARIO_ID_OLD AND CALENDARIO_EVENTO_ID = OLD.ID;
        END
      END
  END
END