diff --git a/backend/Origam.DA.Service/Generators/AbstractSqlCommandGenerator.cs b/backend/Origam.DA.Service/Generators/AbstractSqlCommandGenerator.cs index 3ac5caefa7..d887cb8f92 100644 --- a/backend/Origam.DA.Service/Generators/AbstractSqlCommandGenerator.cs +++ b/backend/Origam.DA.Service/Generators/AbstractSqlCommandGenerator.cs @@ -1409,9 +1409,9 @@ public string UpsertSql(DataStructure ds, DataStructureEntity entity) keysBuilder.Append(", "); searchPredicatesBuilder.Append(" AND "); } - keysBuilder.AppendFormat("{0} as {1}", + keysBuilder.AppendFormat(RenderUpsertKey( paramName, - fieldName); + fieldName)); searchPredicatesBuilder.AppendFormat("{0}.{1} = src.{1}", tableName, fieldName); keys++; @@ -1445,7 +1445,6 @@ public string UpsertSql(DataStructure ds, DataStructureEntity entity) insertValuesBuilder)); return sqlExpression.ToString(); } - internal abstract string MergeSql(string tableName, StringBuilder keysBuilder, StringBuilder searchPredicatesBuilder, StringBuilder updateBuilder, StringBuilder insertColumnsBuilder, StringBuilder insertValuesBuilder); public string InsertSql(DataStructure ds, DataStructureEntity entity) @@ -4043,6 +4042,7 @@ var placeholderElements } return output; } + protected abstract string RenderUpsertKey(string paramName, string fieldName); #endregion #region Operators diff --git a/backend/Origam.DA.Service/Generators/MsSqlCommandGenerator.cs b/backend/Origam.DA.Service/Generators/MsSqlCommandGenerator.cs index fea6193a14..78861e566b 100644 --- a/backend/Origam.DA.Service/Generators/MsSqlCommandGenerator.cs +++ b/backend/Origam.DA.Service/Generators/MsSqlCommandGenerator.cs @@ -469,5 +469,9 @@ protected override string SqlPrimaryIndex() { return " PRIMARY KEY NONCLUSTERED"; } + protected override string RenderUpsertKey(string paramName, string fieldName) + { + return string.Format("{0} as {1}", paramName, fieldName); + } } } \ No newline at end of file diff --git a/backend/Origam.DA.Service/Generators/PgSqlCommandGenerator.cs b/backend/Origam.DA.Service/Generators/PgSqlCommandGenerator.cs index 3564c34f7b..abb5525bbd 100644 --- a/backend/Origam.DA.Service/Generators/PgSqlCommandGenerator.cs +++ b/backend/Origam.DA.Service/Generators/PgSqlCommandGenerator.cs @@ -230,7 +230,7 @@ internal override string MergeSql(string tableName, StringBuilder keysBuilder, S { StringBuilder sqlExpression = new StringBuilder(); return sqlExpression.AppendFormat( - "INSERT INTO {0} ({1}) VALUES ({2}) ON CONFLICT {3} DO UPDATE SET {4};", + "INSERT INTO {0} ({1}) VALUES ({2}) ON CONFLICT ({3}) DO UPDATE SET {4};", tableName, insertColumnsBuilder, insertValuesBuilder, @@ -415,5 +415,9 @@ protected override string SqlPrimaryIndex() return " PRIMARY KEY"; } + protected override string RenderUpsertKey(string paramName, string fieldName) + { + return fieldName; + } } } \ No newline at end of file