まず、私の近似的な英語を私に許してください。Android:PRIMARY KEYに対応しないFOREIGN KEYを持つINSERT
私は2番目(tb_garage)を参照する外部キーを持つ2つのテーブル、1(tb_facture)を持っている
私の問題は、私はtb_garageを参照する外部キーを与えることなくtb_factureに挿入することはできませんということです。
有効な外部キーを指定しても問題はありません。しかし、-1(または他のもの)を与えると、挿入されません。
私のアプリでは、請求書にガレージをリンクする義務がないので、これを行うことができなければなりません。ここで
は、挿入コードです:
private void saveState(){
String libelleFac = etLibelleFac.getText().toString();
String dateFac = tvDateAfficheeFac.getText().toString();
String kmFac = etKmFac.getText().toString();
String remarqueFac = etRemarqueFac.getText().toString();
float montantFac = Float.parseFloat(etMontantFac.getText().toString());
String datePaieFac = tvDateAfficheePaiement.getText().toString();
if(mRowId == null){
if (cbGarageFac.isChecked()){
db.insererFacture(itemSpListeVhc, itemSpListeGar, dateFac, libelleFac, remarqueFac, kmFac, montantFac, datePaieFac);
}
else{
db.insererFacture(itemSpListeVhc, -1, dateFac, libelleFac, remarqueFac, kmFac, montantFac, datePaieFac);
}
}
}
私が交換した場合は-1有効な外部キーによって、またはitemSpListeGarによって、それが動作します。あなたの助けのための
public long insererFacture(long fkVhcFac, long fkGarFac, String dateFac, String libelleFac, String remarqueFac, String kmFac, float montantFac, String datePaieFac){
ContentValues values = new ContentValues();
values.put("fk_vhc_fa", fkVhcFac);
values.put("fk_gar_fa", fkGarFac);
values.put("date_fa", dateFac);
values.put("libelle_fa", libelleFac);
values.put("remarque_fa", remarqueFac);
values.put("kilometrage_fa", kmFac);
values.put("montant_fa", montantFac);
values.put("date_paie_fa", datePaieFac);
return db.insert("TB_FACTURE", null, values);
}
ありがとう:
は、ここに私のクエリです!
PS:私は、私は本当の外部キーを使用しないことを指定しますが、このようなものですトリガ方法:
"fk_gar_fa INTEGER CONSTRAINT ct_fk_gar_fa REFERENCES TB_GARAGE(_id),"
FK列にNULLを許可していますか? NULLを挿入してください。 – Jacob
nullで置き換えると、長い型が必要なので、コードに間違いがあります。 – HerrM
正確な表構造を知らないと、私は確信が持てませんが、逆の関係になっている可能性があります。あなたがファクトでレコードを持っていなければならないが、ファクシミリを参照してファクシミリをガレージに入れてみる。 fkの問題を解決し、関係をより正確にモデル化します。 –