Как вставить данные в две таблицы с одинаковым идентификатором(1:m)?
Всем привет.
Я пытаюсь сохранить данные в двух таблицах. Таблица 1 будет обрабатывать общие данные( дата, кассир, итого), а таблица 2-подробные данные( например, pname, pqty, pprice).
Я пытаюсь сохранить эти данные в двух таблицах с одинаковым идентификатором. На данный момент я храню данные таким образом:
Но главная проблема снизу кода заключается в том, что номер счета( NR_F) хранится через код, а не автоматически, что не является отличным вариантом( из-за клонфликтных данных на dba)
Я использовал поле ID( autonumber, Identity(1,1)). но идентификатор не тот же самый. Сколько бы продукта я ни вставил , столько же ID будет предоставлено( и там,где я хочу вызвать эти данные, я не могу позвонить по id из-за большого количества вставленных id).
Главный вопрос заключается в том, как вставить только одну строку в таблицу 1(дата, сумма, кассир) и несколько строк в таблицу 2 (Сведения о продукте), связанных друг с другом номером счета(NR_F))
Что я уже пробовал:
{ conn.Open(); foreach (DataGridViewRow row in dtgprofatura.Rows) { if (!row.IsNewRow) { SqlCommand cmd = new SqlCommand("insertprofatura", conn); cmd.CommandType = CommandType.StoredProcedure; cmd.Parameters.Clear(); cmd.Parameters.Add(new SqlParameter("@shenime", txtshenimi.Text)); cmd.Parameters.Add(new SqlParameter("@data", DateTime.Now)); cmd.Parameters.Add(new SqlParameter("@kasieri", lbluser.Text)); cmd.Parameters.Add(new SqlParameter("@NR_F", int.Parse(lblidfatura.Text))); cmd.Parameters.Add(new SqlParameter("@emri_sh", lblshitesiemri.Text)); cmd.Parameters.Add(new SqlParameter("@niptsh", int.Parse(lblshitesinipt.Text))); cmd.Parameters.Add(new SqlParameter("@adresash", lbladresashitesi.Text)); cmd.Parameters.Add(new SqlParameter("@telefonish", lblshitesitelefon.Text)); cmd.Parameters.Add(new SqlParameter("@emri_b", cmbbleresi.Text)); cmd.Parameters.Add(new SqlParameter("@niptb", lblbleresinipt.Text)); cmd.Parameters.Add(new SqlParameter("@adresab", lblbleresiadresa.Text)); cmd.Parameters.Add(new SqlParameter("@telefonib", lblbleresitelefoni.Text)); cmd.Parameters.Add(new SqlParameter("@nentotali", lblnentotali.Text)); cmd.Parameters.Add(new SqlParameter("@vleratvsh", lblvleratvsh.Text)); cmd.Parameters.Add(new SqlParameter("@zbritja", txtzbritja.Text)); cmd.Parameters.Add(new SqlParameter("@totali", lbltotali.Text)); cmd.Parameters.Add(new SqlParameter("@barkodi", row.Cells[0].Value)); cmd.Parameters.Add(new SqlParameter("@emertimi", row.Cells[1].Value)); cmd.Parameters.Add(new SqlParameter("@sasia", row.Cells[3].Value)); cmd.Parameters.Add(new SqlParameter("@cmimi", row.Cells[2].Value)); cmd.Parameters.Add(new SqlParameter("@totaliPCS", row.Cells[5].Value)); cmd.Parameters.Add(new SqlParameter("@tvsh", row.Cells[4].Value)); cmd.Parameters.Add(new SqlParameter("@vleratvshpcs", row.Cells[7].Value)); cmd.Parameters.Add(new SqlParameter("@patvshpcs", row.Cells[6].Value)); cmd.ExecuteNonQuery(); } } } catch (Exception ex) { MessageBox.Show("Procedimi i profatures deshtoi " + ex.ToString()); } finally { conn.Close(); clear(); kRIJOToolStripMenuItem.PerformClick(); }и SP используемый для вставки:
ALTER procedure [dbo].[insertprofatura] @shenime varchar(max), @data datetime, @kasieri varchar(50), @NR_F int, @emri_sh varchar(50), @niptsh varchar(50), @adresash varchar(100), @telefonish varchar(50), @emri_b varchar(50), @niptb varchar(50), @adresab varchar(100), @telefonib varchar(50), @nentotali float, @zbritja float, @vleratvsh float, @totali float, @barkodi int, @emertimi varchar(200), @sasia int, @cmimi float, @totaliPCS float, @tvsh float, @vleratvshpcs float, @patvshpcs float as insert into tblprofatura (NR_F,Shenime,Data,Kasieri,Emri_sh,NIPT_sh,Adresa_sh,Telefoni_sh,Emri_b,NIPT_b,Adresa_b,Telefoni_b,Nentot ali,Zbritja,VleraTVSH,Totali) values(@NR_F,@shenime,@data,@kasieri,@emri_sh,@niptsh,@adresash,@telefonish,@emri_b,@niptb,@adresab,@telefonib,@nentotali,@zbritja,@vleratvsh,@totali) insert into tblproofatura_details(NR_F,Barkodi,Emertimi,Cmimi,Sasia,TVSH,Totali,PaTVSHpcs,VleraTVSHpcs) values (@NR_F,@barkodi,@emertimi,@cmimi,@sasia,@tvsh,@totaliPCS,@patvshpcs,@vleratvsh)