Using newish features in MySQL is kind of like playing bingo. Especially if you don’t control the version of the server you are working with. Here are some excerpts from the official manual that illustrate this point:
- Support for triggers is included beginning with MySQL 5.0.2.
- Before MySQL 5.0.10, triggers cannot contain direct references to tables by name.
- The DEFINER clause specifies the MySQL account to be used when checking access privileges at trigger activation time. It was added in MySQL 5.0.17.
- From MySQL 5.0.17 on, MySQL checks trigger privileges like this:
- In MySQL Server 3.23.44 and up, the InnoDB storage engine supports checking of foreign key constraints
- As of MySQL 4.1.1, mysqldump generates dump files that take advantage of this capability automatically when they are reloaded.
- Views (including updatable views) are implemented beginning with MySQL Server 5.0.1.
- Beginning with MySQL 5.0.3, the grant system takes stored routines into account as follows:
- As of MySQL 5.0.1, a stored procedure or function is associated with a particular database.
- Multiple SELECT statements generate multiple result sets, so the client must use a MySQL client library that supports multiple result sets. This means the client must use a client library from a version of MySQL at least as recent as 4.1.
…and the list goes on of course.