Add support for deleting rows in views which are unlocked for editing

If a view has been unlocked for editing by specifiying a pseudo primary
key, with this commit you can now delete records from the view if an
appropriate trigger exists.

See issue #141.
This commit is contained in:
Martin Kleusberg
2018-06-07 16:08:08 +02:00
parent ea25618f22
commit f51b44d8d7
5 changed files with 43 additions and 29 deletions

View File

@@ -71,7 +71,7 @@ public:
* @return An sqlite conform INSERT INTO statement with empty values. (NULL,'',0)
*/
QString emptyInsertStmt(const QString& schemaName, const sqlb::Table& t, const QString& pk_value = QString()) const;
bool deleteRecords(const sqlb::ObjectIdentifier& table, const QStringList& rowids);
bool deleteRecords(const sqlb::ObjectIdentifier& table, const QStringList& rowids, const QString& pseudo_pk = QString());
bool updateRecord(const sqlb::ObjectIdentifier& table, const QString& column, const QString& rowid, const QByteArray& value, bool itsBlob, const QString& pseudo_pk = QString());
bool createTable(const sqlb::ObjectIdentifier& name, const sqlb::FieldVector& structure);
@@ -131,6 +131,8 @@ private:
bool isEncrypted;
bool isReadOnly;
QString primaryKeyForEditing(const sqlb::ObjectIdentifier& table, const QString& pseudo_pk) const;
void collationNeeded(void* pData, sqlite3* db, int eTextRep, const char* sCollationName);
bool tryEncryptionSettings(const QString& filename, bool* encrypted, CipherDialog*& cipherSettings);