にnullにデフォルト値を持つ列を設定します。次のようにターゲット表が定義されています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
を設定しますが、にも関わらず、私はそれがメッセージでクラッシュfalseにisGenerated
を設定します。
"ERROR: null value in column "samochod_id" violates not-null constraint
QPSQL: Unable to create query"
私はQSqlRecordがデータベースにsamochod_id
の世代を残す作るにはどうすればよいですか?
で修正された 私は私のためのクエリを生成するQtのSQLクラスを、使用しなかった場合、あなたが言うように、私はまさにそれを行っているでしょう。私の質問は、自分自身で手作業で行う方法ではなく、自分が望むようにする方法でした。 – KCH
'rec.setGenerated(" samochod_id "、false);'をコメントアウトして、それがどうなるか見てみることができますか? – vyegorov
奇妙ですが、アプリケーションの動作は変わりません。ドキュメントでは、この行のコメントを外しておくと、データベースがこのフィールドを私に生成させるはずです。 – KCH