MySQL server 5.1 trigger problem
Prevent record creation with F_ID and H_ID having NULL values (needs 5.5 or newer server version):

DELIMITER @@;

CREATE TRIGGER cancel_insert_book BEFORE INSERT ON booking
FOR EACH ROW
BEGIN
    IF ((NEW.F_ID IS NULL) AND (NEW.H_ID IS NULL)) THEN
        SIGNAL SQLSTATE '23000'
        SET MESSAGE_TEXT = 'Both F_ID and H_ID cannot be NULL at the same time', 
        MYSQL_ERRNO = 1048;
    END IF;
END; 
@@;

CREATE TRIGGER cancel_update_book BEFORE UPDATE ON booking
FOR EACH ROW
BEGIN
    IF ((NEW.F_ID IS NULL) AND (NEW.H_ID IS NULL)) THEN
        SIGNAL SQLSTATE '23000'
        SET MESSAGE_TEXT = 'Both F_ID and H_ID cannot be NULL at the same time', 
        MYSQL_ERRNO = 1048;
    END IF;
END; 
@@;

DELIMITER ;


Remove record which have F_ID and H_ID having NULL values:

DELIMITER @@;

CREATE TRIGGER cancel_book AFTER UPDATE ON booking
FOR EACH ROW
BEGIN
    IF ((NEW.F_ID IS NULL) AND (NEW.H_ID IS NULL)) THEN
        CREATE EVENT remove_record
        ON SCHEDULE AT CURRENT_TIMESTAMP + INTERVAL 1 SECOND
        DO
          DELETE FROM booking
          WHERE ((f_id IS NULL) AND (h_id IS NULL));
    END IF;
END; 
@@;

DELIMITER ;