Weird phenomenon using Foreign Keys in MySQL
===

I'm having a really weird problem with MySQL concerning Foreign Keys.

I'm trying to create some many-to-many relationships, so I'm holding relational id tables... yada-yada-yada...

I'm using MySQL Workbench, and I possess a really nice Database Model, which uses Foreign Keys.

When I'm exporting the model as a sequence of SQL queries, the software chooses to express the Foreign Keys as CONSTRAINTS, within the table, seems very legit, the queries seem to work properly and everybody should be happy, however... You would expect the following behavior from the database:
If inserting a row which contains key-values which do not exist in the original table, the query should fail. However, the insertion succeds.

After some web research, I came up with an alternative method to work things out (using ALTER TABLE <table_name> ADD FOREIGN KEY... syntax), but I don't like that as I'm lazy, and the database model would probably change quite a lot during the project, and that would become an annoying overhead... 

Does anybody know what's the difference between the two methods?

Here are two queries, the first should work but doesn't, the second works but is annoying:

    CREATE TABLE IF NOT EXISTS <relational_table>
    ... column definitions, primary key, etc. ...

    INDEX <index_name> (<fk_column> ASC) ,
    CONSTRAINT <fk_constraint>
    FOREIGN KEY (<fk_column> )
    REFERENCES <original_table> (<original_column>)
    ON DELETE CASCADE
    ON UPDATE CASCADE
    ... rest of the declaration, Engine is InnoDB ...

    ---------------------------------------------------------------------------------

    ALTER TABLE <relational_table> ADD FOREIGN KEY (`<fk_column>` )
    REFERENCES  <original_table>(`<original_column>` )
    ON DELETE CASCADE
    ON UPDATE CASCADE