@@ -239,6 +239,11 @@ func dropTableColumns(x *xorm.Engine, tableName string, columnNames ...string) (
239
239
case setting .UseMSSQL :
240
240
sess := x .NewSession ()
241
241
defer sess .Close ()
242
+
243
+ if err = sess .Begin (); err != nil {
244
+ return err
245
+ }
246
+
242
247
cols := ""
243
248
for _ , col := range columnNames {
244
249
if cols != "" {
@@ -250,16 +255,21 @@ func dropTableColumns(x *xorm.Engine, tableName string, columnNames ...string) (
250
255
tableName , strings .Replace (cols , "`" , "'" , - 1 ))
251
256
constraints := make ([]string , 0 )
252
257
if err := sess .SQL (sql ).Find (& constraints ); err != nil {
258
+ sess .Rollback ()
253
259
return fmt .Errorf ("Find constraints: %v" , err )
254
260
}
255
261
for _ , constraint := range constraints {
256
262
if _ , err := sess .Exec (fmt .Sprintf ("ALTER TABLE `%s` DROP CONSTRAINT `%s`" , tableName , constraint )); err != nil {
263
+ sess .Rollback ()
257
264
return fmt .Errorf ("Drop table `%s` constraint `%s`: %v" , tableName , constraint , err )
258
265
}
259
266
}
260
267
if _ , err := sess .Exec (fmt .Sprintf ("ALTER TABLE `%s` DROP COLUMN %s" , tableName , cols )); err != nil {
268
+ sess .Rollback ()
261
269
return fmt .Errorf ("Drop table `%s` columns %v: %v" , tableName , columnNames , err )
262
270
}
271
+
272
+ return sess .Commit ()
263
273
default :
264
274
log .Fatal (4 , "Unrecognized DB" )
265
275
}
0 commit comments