我有一个插入新的QSqlRecord到Postgresql数据库的问题。目标表的定义如下:QSqlRecord将默认值列设置为空查询
create table samochod(
samochod_id integer primary key default nextval('samochod_id_seq'),
marka varchar(30),
poj_silnika numeric,
typ_silnika silnik_typ,
liczba_osob smallint
);
和记录插入的代码是:
QSqlRecord rec = model->record();
rec.setGenerated("samochod_id", false);
rec.setValue("marka", ui.brandEdit->text());
rec.setValue("poj_silnika", ui.volSpin->value());
rec.setValue("typ_silnika", ui.engineCombo->currentText());
rec.setValue("liczba_osob", ui.passengersSpin->value());
bool ok = model->insertRecord(-1,rec);
所有我想要做的是插入一个新的记录,使得SQL为我设置其samochod_id
,但尽管我设置isGenerated
将其与消息崩溃错误:
"ERROR: null value in column "samochod_id" violates not-null constraint
QPSQL: Unable to create query"
我应该怎么做才能让QSqlRecord离开一代samochod_id
数据库?
如果我不使用Qt的SQL类,它会为我生成查询,我会按照您的说法完成它。我的问题是如何让他们做我想做的事,而不是如何自己动手做。 – KCH 2012-04-13 20:07:32
你可以注释掉'rec.setGenerated(“samochod_id”,false);'看看它是怎么回事? – vyegorov 2012-04-13 20:09:47
这很奇怪,但它不会改变应用程序行为。文档说,留下这条线未注释应使数据库为我生成此字段。 – KCH 2012-04-13 20:12:17