Translation reference to convert SQL Server BEGIN and COMMIT transaction to Snowflake SQL
Description
Snowflake SQL, a transaction can be started explicitly by executing a BEGIN statement. Snowflake supports the synonyms BEGIN WORK and BEGIN TRANSACTION. Snowflake recommends using BEGIN TRANSACTION.
A transaction can be ended explicitly by executing COMMIT. Read more about Snowflake Transactions here.
Sample Source Patterns
The following examples detail the BEGIN and COMMIT transaction statements.
SQL Server
CREATEPROCEDURE TestTransactionASBEGINDROPTABLEIFEXISTS NEWTABLE;CREATETABLENEWTABLE(COL1 INT, COL2 VARCHAR);BEGINTRANSACTION;INSERT INTO NEWTABLE VALUES (1, 'MICHAEL');INSERT INTO NEWTABLE VALUES(2, 'JACKSON');COMMITTRANSACTION;END
CREATEPROCEDURE TestTransactionASBEGINDROPTABLEIFEXISTS NEWTABLE;CREATETABLENEWTABLE(COL1 INT, COL2 VARCHAR);BEGINTRANSACTION LabelA;INSERT INTO NEWTABLE VALUES (1, 'MICHAEL');INSERT INTO NEWTABLE VALUES(2, 'JACKSON');COMMITTRANSACTION LabelA;END
Snowflake SQL
CREATEORREPLACEPROCEDURE PUBLIC.TestTransaction ()RETURNSVARCHARLANGUAGESQLEXECUTEASCALLERAS$$BEGINDROPTABLEIFEXISTS PUBLIC.NEWTABLE;CREATE OR REPLACETABLEPUBLIC.NEWTABLE ( COL1 INT, COL2 VARCHAR);BEGINTRANSACTION;INSERT INTO PUBLIC.NEWTABLE VALUES (1, 'MICHAEL');INSERT INTO PUBLIC.NEWTABLE VALUES(2, 'JACKSON');COMMIT;END;$$;
CREATEORREPLACEPROCEDURE TestTransaction ()RETURNSVARCHARLANGUAGESQLEXECUTEASCALLERAS$$BEGINDROPTABLEIFEXISTS NEWTABLE;CREATE OR REPLACETABLENEWTABLE ( COL1 INT, COL2 VARCHAR );BEGINTRANSACTION-- ** MSC-WARNING - MSCEWI1101 - COMMENTED OUT TRANSACTION LABEL NAME BECAUSE IS NOT APPLICABLE IN SNOWFLAKE **-- LabelA ;INSERT INTO NEWTABLE VALUES (1, 'MICHAEL');INSERT INTO NEWTABLE VALUES(2, 'JACKSON');COMMIT;END;$$;