11import { CockroachDriver } from "../driver/cockroachdb/CockroachDriver" ;
22import { SapDriver } from "../driver/sap/SapDriver" ;
3+ import { ColumnMetadata } from "../metadata/ColumnMetadata" ;
34import { QueryBuilder } from "./QueryBuilder" ;
45import { ObjectLiteral } from "../common/ObjectLiteral" ;
56import { Connection } from "../connection/Connection" ;
@@ -381,6 +382,7 @@ export class UpdateQueryBuilder<Entity> extends QueryBuilder<Entity> implements
381382
382383 // prepare columns and values to be updated
383384 const updateColumnAndValues : string [ ] = [ ] ;
385+ const updatedColumns : ColumnMetadata [ ] = [ ] ;
384386 const newParameters : ObjectLiteral = { } ;
385387 let parametersCount = this . connection . driver instanceof MysqlDriver ||
386388 this . connection . driver instanceof AuroraDataApiDriver ||
@@ -399,6 +401,7 @@ export class UpdateQueryBuilder<Entity> extends QueryBuilder<Entity> implements
399401
400402 columns . forEach ( column => {
401403 if ( ! column . isUpdate ) { return ; }
404+ updatedColumns . push ( column ) ;
402405
403406 const paramName = "upd_" + column . databaseName ;
404407
@@ -458,9 +461,9 @@ export class UpdateQueryBuilder<Entity> extends QueryBuilder<Entity> implements
458461 } ) ;
459462 } ) ;
460463
461- if ( metadata . versionColumn )
464+ if ( metadata . versionColumn && updatedColumns . indexOf ( metadata . versionColumn ) === - 1 )
462465 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 )
464467 updateColumnAndValues . push ( this . escape ( metadata . updateDateColumn . databaseName ) + " = CURRENT_TIMESTAMP" ) ; // todo: fix issue with CURRENT_TIMESTAMP(6) being used, can "DEFAULT" be used?!
465468
466469 } else {
0 commit comments