From 94d3b218a30bd52567fe565f9c5bde9edfe2f2bc Mon Sep 17 00:00:00 2001 From: Umed Khudoiberdiev Date: Fri, 2 Dec 2016 11:23:14 +0500 Subject: [PATCH] fixed issue with onDelete not working in sqllite --- src/driver/sqlite/SqliteDriver.ts | 4 ++++ src/driver/sqlite/SqliteQueryRunner.ts | 1 + 2 files changed, 5 insertions(+) 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);