diff --git a/src/driver/sap/SapQueryRunner.ts b/src/driver/sap/SapQueryRunner.ts index 1eaf46cd74..d8976242d9 100644 --- a/src/driver/sap/SapQueryRunner.ts +++ b/src/driver/sap/SapQueryRunner.ts @@ -508,6 +508,7 @@ export class SapQueryRunner extends BaseQueryRunner implements QueryRunner { referencedColumnNames: foreignKeys.map(dbFk => dbFk["REFERENCED_COLUMN_NAME"]), onDelete: dbForeignKey["DELETE_RULE"] === "RESTRICT" ? "NO ACTION" : dbForeignKey["DELETE_RULE"], onUpdate: dbForeignKey["UPDATE_RULE"] === "RESTRICT" ? "NO ACTION" : dbForeignKey["UPDATE_RULE"], + deferrable: dbForeignKey["CHECK_TIME"].replace("_", " "), // "CHECK_TIME" is "INITIALLY_IMMEDIATE" or "INITIALLY DEFERRED" }); }); @@ -620,6 +621,7 @@ export class SapQueryRunner extends BaseQueryRunner implements QueryRunner { referencedColumnNames: foreignKeys.map(dbFk => dbFk["REFERENCED_COLUMN_NAME"]), onDelete: dbForeignKey["DELETE_RULE"] === "RESTRICT" ? "NO ACTION" : dbForeignKey["DELETE_RULE"], onUpdate: dbForeignKey["UPDATE_RULE"] === "RESTRICT" ? "NO ACTION" : dbForeignKey["UPDATE_RULE"], + deferrable: dbForeignKey["CHECK_TIME"].replace("_", " "), }); }); @@ -966,6 +968,7 @@ export class SapQueryRunner extends BaseQueryRunner implements QueryRunner { referencedColumnNames: foreignKeys.map(dbFk => dbFk["REFERENCED_COLUMN_NAME"]), onDelete: dbForeignKey["DELETE_RULE"] === "RESTRICT" ? "NO ACTION" : dbForeignKey["DELETE_RULE"], onUpdate: dbForeignKey["UPDATE_RULE"] === "RESTRICT" ? "NO ACTION" : dbForeignKey["UPDATE_RULE"], + deferrable: dbForeignKey["CHECK_TIME"].replace("_", " "), }); }); @@ -1110,6 +1113,7 @@ export class SapQueryRunner extends BaseQueryRunner implements QueryRunner { referencedColumnNames: foreignKeys.map(dbFk => dbFk["REFERENCED_COLUMN_NAME"]), onDelete: dbForeignKey["DELETE_RULE"] === "RESTRICT" ? "NO ACTION" : dbForeignKey["DELETE_RULE"], onUpdate: dbForeignKey["UPDATE_RULE"] === "RESTRICT" ? "NO ACTION" : dbForeignKey["UPDATE_RULE"], + deferrable: dbForeignKey["CHECK_TIME"].replace("_", " "), }); }); @@ -1185,6 +1189,7 @@ export class SapQueryRunner extends BaseQueryRunner implements QueryRunner { referencedColumnNames: foreignKeys.map(dbFk => dbFk["REFERENCED_COLUMN_NAME"]), onDelete: dbForeignKey["DELETE_RULE"] === "RESTRICT" ? "NO ACTION" : dbForeignKey["DELETE_RULE"], onUpdate: dbForeignKey["UPDATE_RULE"] === "RESTRICT" ? "NO ACTION" : dbForeignKey["UPDATE_RULE"], + deferrable: dbForeignKey["CHECK_TIME"].replace("_", " "), }); }); @@ -1705,6 +1710,7 @@ export class SapQueryRunner extends BaseQueryRunner implements QueryRunner { referencedColumnNames: foreignKeys.map(dbFk => dbFk["REFERENCED_COLUMN_NAME"]), onDelete: dbForeignKey["DELETE_RULE"] === "RESTRICT" ? "NO ACTION" : dbForeignKey["DELETE_RULE"], onUpdate: dbForeignKey["UPDATE_RULE"] === "RESTRICT" ? "NO ACTION" : dbForeignKey["UPDATE_RULE"], + deferrable: dbForeignKey["CHECK_TIME"].replace("_", " "), }); }); @@ -1799,6 +1805,9 @@ export class SapQueryRunner extends BaseQueryRunner implements QueryRunner { const onUpdate = fk.onUpdate === "NO ACTION" ? "RESTRICT" : fk.onUpdate; constraint += ` ON UPDATE ${onUpdate}`; } + if (fk.deferrable) { + constraint += ` ${fk.deferrable}`; + } return constraint; }).join(", "); @@ -1960,6 +1969,10 @@ export class SapQueryRunner extends BaseQueryRunner implements QueryRunner { sql += ` ON UPDATE ${onUpdate}`; } + if (foreignKey.deferrable) { + sql += ` ${foreignKey.deferrable}`; + } + return new Query(sql); }