Как я могу сделать значение первичного ключа таким же, как внешний ключ в другой таблице?
Привет, в настоящее время у меня есть ASP.NET веб-приложение, которое захватывает входные данные пользователей и помещает их в базу данных.
У меня есть две таблицы "Stock_Take" и "Stock_Take_Item", Stock_Take хранит информацию о пользователе, который представил значения и дату взятия акций, а stock_take_item хранит информацию об идентификаторе товара, описании товара и количестве относительно каждого товара.
Первичный ключ Stock_Take-это StockTakeIDNew и автоинкременты с использованием 'Identity', а также внешний ключ в таблице Stock_Take_Item.
Когда я вставляю всю информацию из запаса (одним нажатием кнопки), я вставляю только имя пользователя и дату в Stock_Take, а первичный ключ автоматически увеличивается. Однако это не влияет на внешний ключ в таблице Stock_Take_Item, поэтому я не могу связать эти две таблицы.
Есть идеи, как мне это сделать?
Вот мой код C# с включенными вставками SQL:
protected void btnSubmit_Click(object sender, EventArgs e) { string query = "insert into Stock_Take_Item(ItemID, BarQuantity, StorageQuantity) values(@ID, @BAR, @STORAGE); insert into Stock_Take(Username, StockDate)" + " values(@Username, GetDate())"; SqlConnection con = new SqlConnection(connectionString); SqlCommand cmd = new SqlCommand(query, con); con.Open(); foreach (GridViewRow row in gvStockTake.Rows) { Label ID = row.FindControl("itemId") as Label; TextBox BAR = row.FindControl("txtBar") as TextBox; TextBox STORAGE = row.FindControl("txtStorage") as TextBox; cmd.Parameters.Clear(); cmd.Parameters.Add("@ID", SqlDbType.VarChar).Value = ID.Text; cmd.Parameters.Add("@BAR", SqlDbType.Int).Value = BAR.Text; cmd.Parameters.Add("@STORAGE", SqlDbType.Int).Value = STORAGE.Text; } cmd.Parameters.AddWithValue("@Username", Session["username"]); cmd.ExecuteNonQuery(); //query execution con.Close(); Response.Write("Successfully inserted stock take items."); }
Я все еще учусь ASP.NET C# и SQL, как я иду, так что любые рекомендации более чем ценятся!!
Что я уже пробовал:
Я пытался исследовать это, но не смог найти правильного результата.
F-ES Sitecore
У вас есть две таблицы, так что вам нужно сделать, чтобы вставки. Сначала вставьте в родительскую таблицу (stock_take) и получите идентификатор новой записи
https://stackoverflow.com/questions/18373461/execute-insert-command-and-return-inserted-id-in-sql?utm_medium=organic&utm_source=google_rich_qa&utm_campaign=google_rich_qa
теперь у вас есть идентификатор, который вы можете использовать при вставке в дочернюю таблицу Stock_Take_Item, чтобы связать их вместе.