sqlite primary key
This commit is contained in:
parent
2fbd877f77
commit
81f23a1874
|
|
@ -220,10 +220,11 @@ QString SqlGeneratorBase::diff(TableModel *oldTable, TableModel *newTable)
|
||||||
.arg(newTable->name())
|
.arg(newTable->name())
|
||||||
.arg(columnSql.join(",\n"));
|
.arg(columnSql.join(",\n"));
|
||||||
} else {
|
} else {
|
||||||
if (!newTable->primaryKey().isNull())
|
if (!newTable->primaryKey().isNull()) {
|
||||||
columnSql << QString("CONSTRAINT pk_%1 PRIMARY KEY (%2)")
|
QString pkCon = primaryKeyConstraint(newTable);
|
||||||
.arg(newTable->name())
|
if (!pkCon.isEmpty())
|
||||||
.arg(newTable->primaryKey());
|
columnSql << pkCon;
|
||||||
|
}
|
||||||
|
|
||||||
sql = QString("CREATE TABLE %1 \n(%2)")
|
sql = QString("CREATE TABLE %1 \n(%2)")
|
||||||
.arg(newTable->name())
|
.arg(newTable->name())
|
||||||
|
|
@ -945,6 +946,13 @@ void SqlGeneratorBase::appendSkipTake(QString &sql, int skip, int take)
|
||||||
Q_UNUSED(take);
|
Q_UNUSED(take);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
QString SqlGeneratorBase::primaryKeyConstraint(const TableModel *table) const
|
||||||
|
{
|
||||||
|
return QString("CONSTRAINT pk_%1 PRIMARY KEY (%2)")
|
||||||
|
.arg(table->name())
|
||||||
|
.arg(table->primaryKey());
|
||||||
|
}
|
||||||
|
|
||||||
QString SqlGeneratorBase::createConditionalPhrase(const PhraseData *d) const
|
QString SqlGeneratorBase::createConditionalPhrase(const PhraseData *d) const
|
||||||
{
|
{
|
||||||
if (!d)
|
if (!d)
|
||||||
|
|
|
||||||
|
|
@ -128,6 +128,8 @@ public:
|
||||||
virtual QString phrase(const PhraseData *d) const;
|
virtual QString phrase(const PhraseData *d) const;
|
||||||
virtual QString operatorString(const PhraseData::Condition &cond) const;
|
virtual QString operatorString(const PhraseData::Condition &cond) const;
|
||||||
virtual void appendSkipTake(QString &sql, int skip = -1, int take = -1);
|
virtual void appendSkipTake(QString &sql, int skip = -1, int take = -1);
|
||||||
|
virtual QString primaryKeyConstraint(const TableModel *table) const;
|
||||||
|
|
||||||
protected:
|
protected:
|
||||||
QString createConditionalPhrase(const PhraseData *d) const;
|
QString createConditionalPhrase(const PhraseData *d) const;
|
||||||
QString createFieldPhrase(const PhraseList &ph);
|
QString createFieldPhrase(const PhraseList &ph);
|
||||||
|
|
|
||||||
|
|
@ -33,10 +33,12 @@ QString SqliteGenerator::fieldType(FieldModel *field)
|
||||||
{
|
{
|
||||||
QString ret = field->name + " ";
|
QString ret = field->name + " ";
|
||||||
QString dbType;
|
QString dbType;
|
||||||
QString primaryKeyPerfix;
|
if (field->isPrimaryKey) {
|
||||||
if (field->isPrimaryKey)
|
QString primaryKeyPerfix = " PRIMARY KEY";
|
||||||
primaryKeyPerfix = " PRIMARY KEY";
|
if (field->isAutoIncrement)
|
||||||
|
primaryKeyPerfix += " AUTOINCREMENT";
|
||||||
|
return "INTEGER" + primaryKeyPerfix;
|
||||||
|
}
|
||||||
switch (field->type) {
|
switch (field->type) {
|
||||||
case QMetaType::Bool: return "BOOLEAN";
|
case QMetaType::Bool: return "BOOLEAN";
|
||||||
case QMetaType::QByteArray: return "BLOB";
|
case QMetaType::QByteArray: return "BLOB";
|
||||||
|
|
@ -47,16 +49,16 @@ QString SqliteGenerator::fieldType(FieldModel *field)
|
||||||
case QMetaType::Float: return "FLOAT";
|
case QMetaType::Float: return "FLOAT";
|
||||||
|
|
||||||
case QMetaType::SChar:
|
case QMetaType::SChar:
|
||||||
case QMetaType::Char: return "TINYINT" + primaryKeyPerfix;
|
case QMetaType::Char: return "TINYINT";
|
||||||
case QMetaType::UChar: return "TINYINT UNSIGNED" + primaryKeyPerfix;
|
case QMetaType::UChar: return "TINYINT UNSIGNED";
|
||||||
case QMetaType::Short: return "SMALLINT" + primaryKeyPerfix;
|
case QMetaType::Short: return "SMALLINT";
|
||||||
case QMetaType::UShort: return "SMALLINT UNSIGNED" + primaryKeyPerfix;
|
case QMetaType::UShort: return "SMALLINT UNSIGNED";
|
||||||
case QMetaType::Int: return "INT" + primaryKeyPerfix;
|
case QMetaType::Int: return "INT";
|
||||||
case QMetaType::UInt: return "INT UNSIGNED" + primaryKeyPerfix;
|
case QMetaType::UInt: return "INT UNSIGNED";
|
||||||
case QMetaType::Long: return "MEDIUMINT" + primaryKeyPerfix;
|
case QMetaType::Long: return "MEDIUMINT";
|
||||||
case QMetaType::ULong: return "MEDIUMINT UNSIGNED" + primaryKeyPerfix;
|
case QMetaType::ULong: return "MEDIUMINT UNSIGNED";
|
||||||
case QMetaType::LongLong: return "BIGINT" + primaryKeyPerfix;
|
case QMetaType::LongLong: return "BIGINT";
|
||||||
case QMetaType::ULongLong: return "BIGINT UNSIGNED" + primaryKeyPerfix;
|
case QMetaType::ULongLong: return "BIGINT UNSIGNED";
|
||||||
|
|
||||||
case QMetaType::QChar: return "NCHAR(1)";
|
case QMetaType::QChar: return "NCHAR(1)";
|
||||||
|
|
||||||
|
|
@ -87,7 +89,19 @@ void SqliteGenerator::appendSkipTake(QString &sql, int skip, int take)
|
||||||
if (take != -1 && skip != -1)
|
if (take != -1 && skip != -1)
|
||||||
sql.append(QString(" LIMIT %1 OFFSET %2")
|
sql.append(QString(" LIMIT %1 OFFSET %2")
|
||||||
.arg(take)
|
.arg(take)
|
||||||
.arg(skip));
|
.arg(skip));
|
||||||
|
}
|
||||||
|
|
||||||
|
QString SqliteGenerator::primaryKeyConstraint(const TableModel *table) const
|
||||||
|
{
|
||||||
|
Q_UNUSED(table);
|
||||||
|
return QString();
|
||||||
|
// QString sql = QString("CONSTRAINT pk_%1 PRIMARY KEY (%2)")
|
||||||
|
// .arg(table->name())
|
||||||
|
// .arg(table->primaryKey());
|
||||||
|
// if (table->field(table->primaryKey())->isAutoIncrement)
|
||||||
|
// sql += " AUTOINCREMENT";
|
||||||
|
// return sql;
|
||||||
}
|
}
|
||||||
|
|
||||||
NUT_END_NAMESPACE
|
NUT_END_NAMESPACE
|
||||||
|
|
|
||||||
|
|
@ -34,6 +34,8 @@ public:
|
||||||
QString fieldType(FieldModel *field);
|
QString fieldType(FieldModel *field);
|
||||||
|
|
||||||
void appendSkipTake(QString &sql, int skip, int take);
|
void appendSkipTake(QString &sql, int skip, int take);
|
||||||
|
|
||||||
|
QString primaryKeyConstraint(const TableModel *table) const;
|
||||||
};
|
};
|
||||||
|
|
||||||
NUT_END_NAMESPACE
|
NUT_END_NAMESPACE
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue