Ouais, la syntaxe c'est BEGIN, pas START
Sinon, la plupart des SGBD supportent les transactions toujours avec la même syntaxe.
Pour MySQL, il me semble que ce n'est pas supporté par défaut. Il faut un type de table particulier, et installer un module il me semble, mais j'en sais pas plus, je n'ai jamais essayé. Avec les dernières versions c'est peut-être intégré d'office.
Sinon, la différence au niveau du support des transations se situe au niveau de la gestion avancées de transactions.
En effet, SQL Server par exemple supporte des sous-transaction, avec possibilité de commiter ou rollbacker un nouveau ou plusieurs de transaction, sans impacter la transaction générale.
Avec Oracle, la solution adoptée est différente. Ca marche avec des CHECKPOINT. C'est à dire qu'au sein d'une même transaction, on peut décider de rollbacker jusqu'à un checkpoint défini.
Mais pour le fonctionnement basique des transations, c'est pareil pour tous les SGBD.
La seule différence se situe au niveau des lock engendrés par les transactions.
SQL Server va locker toute la table tant que la transaction n'est pas terminée.
Oracle va tenter de faire du versionning au niveau des lignes, puis des locks au niveau des lignes uniquement, ce qui permet une meilleure montée en charge en cas de transactions intensives.
Pour MySQL je ne sais pas quel type de lock est utilisé.
Mais de toute façon, c'est transparent pour l'utilisateur, la seule différence sera au niveau des performances et des risques de timeout plus ou moins importants en cas de transactions intensives et parallèles.
Sinon, au niveau d'ODBC quand on utilise ODBC, il y a aussi une gestion des transactions qui fait abstraction du support, et qui il me semble permet de faire des transaction imbriquée dans tous les cas (à confirmer, en tout cas ça marche même dans Access qui n'est pas transactionnel)