I am creating a script that will be run in a MS SQL server. This script will run multiple statements and needs to be transactional, if one of the statement fails the overall
Have you tried it without the GO?
Normally you should not mix table changes and data changes in the same script.