1
1
import { CockroachDriver } from "../driver/cockroachdb/CockroachDriver" ;
2
2
import { SapDriver } from "../driver/sap/SapDriver" ;
3
+ import { ColumnMetadata } from "../metadata/ColumnMetadata" ;
3
4
import { QueryBuilder } from "./QueryBuilder" ;
4
5
import { ObjectLiteral } from "../common/ObjectLiteral" ;
5
6
import { Connection } from "../connection/Connection" ;
@@ -381,6 +382,7 @@ export class UpdateQueryBuilder<Entity> extends QueryBuilder<Entity> implements
381
382
382
383
// prepare columns and values to be updated
383
384
const updateColumnAndValues : string [ ] = [ ] ;
385
+ const updatedColumns : ColumnMetadata [ ] = [ ] ;
384
386
const newParameters : ObjectLiteral = { } ;
385
387
let parametersCount = this . connection . driver instanceof MysqlDriver ||
386
388
this . connection . driver instanceof AuroraDataApiDriver ||
@@ -399,6 +401,7 @@ export class UpdateQueryBuilder<Entity> extends QueryBuilder<Entity> implements
399
401
400
402
columns . forEach ( column => {
401
403
if ( ! column . isUpdate ) { return ; }
404
+ updatedColumns . push ( column ) ;
402
405
403
406
const paramName = "upd_" + column . databaseName ;
404
407
@@ -458,9 +461,9 @@ export class UpdateQueryBuilder<Entity> extends QueryBuilder<Entity> implements
458
461
} ) ;
459
462
} ) ;
460
463
461
- if ( metadata . versionColumn )
464
+ if ( metadata . versionColumn && updatedColumns . indexOf ( metadata . versionColumn ) === - 1 )
462
465
updateColumnAndValues . push ( this . escape ( metadata . versionColumn . databaseName ) + " = " + this . escape ( metadata . versionColumn . databaseName ) + " + 1" ) ;
463
- if ( metadata . updateDateColumn )
466
+ if ( metadata . updateDateColumn && updatedColumns . indexOf ( metadata . updateDateColumn ) === - 1 )
464
467
updateColumnAndValues . push ( this . escape ( metadata . updateDateColumn . databaseName ) + " = CURRENT_TIMESTAMP" ) ; // todo: fix issue with CURRENT_TIMESTAMP(6) being used, can "DEFAULT" be used?!
465
468
466
469
} else {
0 commit comments