From c6d5391672a92b476c195093ebde54d8f85f3969 Mon Sep 17 00:00:00 2001 From: Peinthor Rene Date: Mon, 25 Mar 2013 06:41:52 +0100 Subject: [PATCH] don't insert nulls into columns with a default --- src/sqlitetypes.cpp | 21 +++++++++++++++++++-- 1 file changed, 19 insertions(+), 2 deletions(-) diff --git a/src/sqlitetypes.cpp b/src/sqlitetypes.cpp index 1d281b57..6d20b85b 100644 --- a/src/sqlitetypes.cpp +++ b/src/sqlitetypes.cpp @@ -167,12 +167,14 @@ Table Table::parseSQL(const QString &sSQL) } QString Table::emptyInsertStmt() const { - QString stmt = QString("INSERT INTO `%1` VALUES(").arg(m_name); + QString stmt = QString("INSERT INTO `%1`").arg(m_name); QStringList vals; + QStringList fields; foreach(FieldPtr f, m_fields) { if(f->notnull()) { + fields << f->name(); if( m_primarykey.contains(f) && f->isInteger() ) { vals << "NULL"; @@ -186,9 +188,24 @@ QString Table::emptyInsertStmt() const } } else - vals << "NULL"; + { + // don't insert into fields with a default value + // or we will never see it. + if(f->defaultValue().length() == 0) + { + fields << f->name(); + vals << "NULL"; + } + } } + if(!fields.empty()) + { + stmt.append("(`"); + stmt.append(fields.join("`,`")); + stmt.append("`)"); + } + stmt.append(" VALUES ("); stmt.append(vals.join(",")); stmt.append(");");