[Qt-interest] [SOLVED] QSqlTableModel NOT NULL constraints and default values
Ed Smith-Rowland
3dw4rd at verizon.net
Sat May 15 02:02:17 CEST 2010
On 05/14/2010 12:51 AM, Harry Sfougaris wrote:
> I found a semi-acceptable solution for me:
> I wired the beforeInsert signal of my model to a slot, where I do the
> following
>
> if (record.isNull("myFld1")) record.setGenerated("myFld1", false);
>
> I don't know if there is a more clever way, but at least this works!
>
> Harry
>
>
>
>
> On 14 Μαϊ 2010, at 6:03 π.μ., Harry Sfougaris wrote:
>
>> Thanks for that.
>> So, i guess there is also no flag or option in a mapper to only
>> generate sql statements for fields that have actually changed?
>> I am trying to avoid hardcoding my default values in the app. I
>> wonder if in the api you can at least get the default values from the
>> database.
>>
>> Harry
>>
>> ----- Original message -----
>> >
>> > > -----Original Message-----
>> > > Hi all,
>> > > I am using a Postgres table that has some fields defined as
>> > > ....
>> > > myFld1 character varying(1024) NOT NULL DEFAULT 'my default
>> > > value'::character varying,
>> > > ...
>> > > I am using a QDataWidgetMapper with a delegate that converts
>> > > the data in empty text boxes to NULL instead of ''
>> > > This works with fine with other fields that don't have a NOT
>> > > NULL constraint.
>> > >
>> > > When I am trying to use it with a field that has a NOT NULL
>> > > constraint though, upon submit() I get the error:
>> > > "ERROR: null value in column "myFld1" violates not-null
>> > > constraint. QPSQL: unable to create query"
>> > >
>> > > Is there a flag I can set so that the model will allow the
>> > > query to go to the server, or another solution?
>> > >
>> > > Thanks,
>> >
>> > Hi Harry,
>> >
>> > I haven't used Postgres, but Oracle, Firebird and MSSQL. In all of
>> those
>> > three, sending NULL to a NOT NULL column will cause a server
>> error. The
>> > DEFAULT clause is only used when the insert statement does not
>> include the
>> > column. If you explicitly or implicitly include the column name,
>> then you
>> > must provide a non NULL value. I'm not sure whether the Qt drivers
>> provide
>> > the field's default value for you - that's probably too DBMS
>> specific. So
>> > you may need to set that default in your delegate yourself for
>> these fields,
>> > instead of NULL.
>> >
>> > Hope that helps,
>> >
>> > Tony.
>> >
>> >
>> > _______________________________________________
>> > Qt-interest mailing list
>> > Qt-interest at trolltech.com <mailto:Qt-interest at trolltech.com>
>> > http://lists.trolltech.com/mailman/listinfo/qt-interest
>>
>
> Harry Sfougaris
>
>
>
>
>
> _______________________________________________
> Qt-interest mailing list
> Qt-interest at trolltech.com
> http://lists.trolltech.com/mailman/listinfo/qt-interest
>
I use a QValidator to check constraints sometmes.
-------------- next part --------------
An HTML attachment was scrubbed...
URL: http://lists.qt-project.org/pipermail/qt-interest-old/attachments/20100514/c7ea6ddf/attachment.html
More information about the Qt-interest-old
mailing list