SAVEPOINT methods for MSSQL
Rafael Kitover [Sun, 26 Jul 2009 16:04:29 +0000 (16:04 +0000)]
lib/DBIx/Class/Storage/DBI/MSSQL.pm

index a03e8a3..d9cd2ee 100644 (file)
@@ -103,6 +103,23 @@ sub _fetch_identity {
 
 sub last_insert_id { shift->_identity }
 
+# savepoint syntax is the same as in Sybase ASE
+
+sub _svp_begin {
+  my ($self, $name) = @_;
+
+  $self->dbh->do("SAVE TRANSACTION $name");
+}
+
+# A new SAVE TRANSACTION with the same name releases the previous one.
+sub _svp_release { 1 }
+
+sub _svp_rollback {
+  my ($self, $name) = @_;
+
+  $self->dbh->do("ROLLBACK TRANSACTION $name");
+}
+
 sub build_datetime_parser {
   my $self = shift;
   my $type = "DateTime::Format::Strptime";