of not exitsts fields

This commit is contained in:
Jan Prochazka
2024-07-10 11:57:41 +02:00
parent 4864a376c6
commit 9d5c7e6df2
5 changed files with 59 additions and 7 deletions

View File

@@ -92,13 +92,28 @@ export function dumpSqlDelete(dmp: SqlDumper, cmd: Delete) {
}
export function dumpSqlInsert(dmp: SqlDumper, cmd: Insert) {
dmp.put(
'^insert ^into %f (%,i) ^values (',
cmd.targetTable,
cmd.fields.map(x => x.targetColumn)
);
dmp.putCollection(',', cmd.fields, x => dumpSqlExpression(dmp, x));
dmp.put(')');
if (cmd.insertWhereNotExistsCondition) {
dmp.put(
'^insert ^into %f (%,i) ^select ',
cmd.targetTable,
cmd.fields.map(x => x.targetColumn)
);
dmp.putCollection(',', cmd.fields, x => dumpSqlExpression(dmp, x));
if (dmp.dialect.requireFromDual) {
dmp.put(' ^from ^dual ');
}
dmp.put(' ^where ^not ^exists (^select * ^from %f ^where ', cmd.targetTable);
dumpSqlCondition(dmp, cmd.insertWhereNotExistsCondition);
dmp.put(')');
} else {
dmp.put(
'^insert ^into %f (%,i) ^values (',
cmd.targetTable,
cmd.fields.map(x => x.targetColumn)
);
dmp.putCollection(',', cmd.fields, x => dumpSqlExpression(dmp, x));
dmp.put(')');
}
}
export function dumpSqlCommand(dmp: SqlDumper, cmd: Command) {

View File

@@ -38,6 +38,7 @@ export interface Insert {
commandType: 'insert';
fields: UpdateField[];
targetTable: NamedObjectInfo;
insertWhereNotExistsCondition?: Condition;
}
export interface AllowIdentityInsert {