diff -r 79de32ba3296 -r 89e065397ea6 tests/auto/qsqlquery/tst_qsqlquery.cpp --- a/tests/auto/qsqlquery/tst_qsqlquery.cpp Fri May 14 16:40:13 2010 +0300 +++ b/tests/auto/qsqlquery/tst_qsqlquery.cpp Thu May 27 13:40:48 2010 +0300 @@ -209,6 +209,8 @@ void QTBUG_6852(); void QTBUG_5765_data() { generic_data("QMYSQL"); } void QTBUG_5765(); + void sqlite_constraint_data() { generic_data("QSQLITE"); } + void sqlite_constraint(); #if 0 void benchmark_data() { generic_data(); } @@ -3078,6 +3080,31 @@ QCOMPARE(q.value(0).toInt(), 123); } +void tst_QSqlQuery::sqlite_constraint() +{ + QFETCH( QString, dbName ); + QSqlDatabase db = QSqlDatabase::database( dbName ); + CHECK_DATABASE( db ); + + if (db.driverName() != QLatin1String("QSQLITE")) { + QSKIP("Sqlite3 specific test", SkipSingle); + return; + } + + QSqlQuery q(db); + const QString trigger(qTableName("test_constraint", __FILE__)); + + QVERIFY_SQL(q, exec("CREATE TEMP TRIGGER "+trigger+" BEFORE DELETE ON "+qtest+ + "\nFOR EACH ROW " + "\nBEGIN" + "\n SELECT RAISE(ABORT, 'Raised Abort successfully');" + "\nEND;" + )); + + QVERIFY(!q.exec("DELETE FROM "+qtest)); + QCOMPARE(q.lastError().databaseText(), QLatin1String("Raised Abort successfully")); +} + #if 0 void tst_QSqlQuery::benchmark() {