主、副键两表,主表的主键是自动生成的,必须先插入主键表,才能插入副表,怎么做?
比如如下两表,提库单索引表为主表,提库单产品表为副表,提库单号是主键,是流水号,即是自动生成的
提库单索引表(表1) 提库单产品表(表2)
提库单号(PK) 提库时间 提库人 产品编号(PK) 产品名称 数量 提库单号(PK)
说明:表1是用insert语句插入的,而表2是用dataset的update实现的
1.在插入时,必须先插入表1,才能插入表2,如何使得表2获得刚插入的表1的 提库单号?同时还要防止多人操作的情况(好像的用死锁?)
2.删除时,只需删除表1,因为关联,表2会自动删除,同时还要防止多人操作的情况(好像的用死锁?)
3.更新有如何实现呢?
注:假设插入主键表没问题
附一段程序(也许想法不对):
Private Sub PutInDataBase_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles PutInDataBase.Click
Dim str As String
Dim cmd As SqlCommand
Dim Con As SqlConnection
Dim count As Integer
Con = New SqlConnection("Server = localhost;uid=sa;pwd=l801231;database=XXDB")
'将数据插入到InWHTableIndex
cmd = New SqlCommand("PickUpWHTableIndexInsert", Con)
cmd.CommandType = CommandType.StoredProcedure
cmd.Parameters.Add("@BillOfLadingID", SqlDbType.Char, 14)
cmd.Parameters("@BillOfLadingID").Value = Session("BillOfLadingID")
cmd.Parameters.Add("@PickDate", SqlDbType.SmallDateTime)
cmd.Parameters("@PickDate").Value = Session("PickDate")
cmd.Parameters.Add("@WHCharger", SqlDbType.Char)
cmd.Parameters("@WHCharger").Value = Session("WHCharger")
Con.Open()
Try
‘插入主键表
cmd.ExecuteNonQuery()
’如何插入副键表,副键表数据在dataset中
Dim adapter As SqlDataAdapter
Dim mybuilder As SqlCommandBuilder
Dim ds As DataSet
Dim i As Integer
Dim mytable As DataTable
ds = CType(Session("a"), DataSet)
mytable = ds.Tables(0)
×××××××××××
如何写?此断程序只是我的想法,也许我的想法根本不对,假设插入主键表没问题
×××××××××××
Page.RegisterStartupScript("", "<script language='javascript'>alert('已成功添加记录!');window.opener.location.href='PickUpWHTransfer.aspx';</script>")
Catch exc As SqlException
' Page.RegisterStartupScript("alert", "<script language='javascript'> alert('出现错误,数据没能被成功录入!')</script>")
'End Try
Con.Close()
End Sub
谢谢大家!!!