diff --git a/src/driver/sqlite/SqliteDriver.ts b/src/driver/sqlite/SqliteDriver.ts index 8e9664827..783648726 100644 --- a/src/driver/sqlite/SqliteDriver.ts +++ b/src/driver/sqlite/SqliteDriver.ts @@ -83,6 +83,10 @@ export class SqliteDriver implements Driver { connection: connection, isTransactionActive: false }; + + // we need to enable foreign keys in sqlite to make sure all foreign key related features + // working properly. this also makes onDelete to work with sqlite. + connection.run(`PRAGMA foreign_keys = ON`); ok(); }); }); diff --git a/src/driver/sqlite/SqliteQueryRunner.ts b/src/driver/sqlite/SqliteQueryRunner.ts index b2ed9a280..800b1a515 100644 --- a/src/driver/sqlite/SqliteQueryRunner.ts +++ b/src/driver/sqlite/SqliteQueryRunner.ts @@ -562,6 +562,7 @@ export class SqliteQueryRunner implements QueryRunner { const columnNames = foreignKey.columnNames.map(name => `"${name}"`).join(", "); const referencedColumnNames = foreignKey.referencedColumnNames.map(name => `"${name}"`).join(", "); sql1 += `, FOREIGN KEY(${columnNames}) REFERENCES "${foreignKey.referencedTableName}"(${referencedColumnNames})`; + if (foreignKey.onDelete) sql1 += " ON DELETE " + foreignKey.onDelete; }); const primaryKeyColumns = tableSchema.columns.filter(column => column.isPrimary && !column.isGenerated);