How can I properly use a trigger inside of stored procedure to validate an email?
Triggers are created on actual tables, and are automatically executed when an action is performed on the table in question, they're not actually created within procedures.

So, given the table:

create table Faculty
(
LastName varchar(100), 
FirstName varchar(100), 
Email varchar(100), 
HireDate date, 
Salary integer,
DepartmentID integer
);


... your trigger code, once removed from the procedure, does work:

mysql&gt; DELIMITER $$
mysql&gt;
mysql&gt; CREATE TRIGGER Review_Email_Before
    -&gt;         BEFORE INSERT ON Faculty
    -&gt;         FOR EACH ROW
    -&gt;       BEGIN
    -&gt;         IF new.Email != '^\w+(\.\w+)*+@\w+(\.\w+)+$'
    -&gt;         THEN
    -&gt;           SIGNAL SQLSTATE  'HY000'
    -&gt;              SET MESSAGE_TEXT= 'This email doesn\'t match FirstLast@college.edu';
    -&gt;         END IF ;
    -&gt; END;
    -&gt; $$
Query OK, 0 rows affected (0.01 sec)

mysql&gt;
mysql&gt; DELIMITER ;
mysql&gt;
mysql&gt; INSERT INTO Faculty(LastName, FirstName, Email, HireDate, Salary, DepartmentID)
    -&gt;               VALUES('Stanley', 'Mike', 'bad@bad.bad', current_date(), 20000, 1);
ERROR 1644 (HY000): This email doesn't match FirstLast@college.edu
mysql&gt;