【发布时间】:2016-04-10 05:43:11
【问题描述】:
假设我有两个表Historytable 和studentInformation table。
我想做的是:
If schoolyear and level exist in Historytable
update studentInformationtable
else
INSERT schoolyear,level to Historytable
update studentInformationtable
我的存储过程代码:
ALTER PROCEDURE [dbo].[InsertUpdate]
@studentID INT,
@SchoolYear Nvarchar(20),
@levels Nvarchar(20),
@FirstName Nvarchar(20),
@SurName Nvarchar(20)
AS
BEGIN
SET NOCOUNT ON;
BEGIN TRAN
IF exists (SELECT SchoolYear, Levels
FROM StudentHistory WITH (updlock, serializable)
WHERE StudentID = @studentID)
BEGIN
UPDATE StudentInformation
SET FirstName = @FirstName ,
Surname = @SurName
WHERE StudentID = @studentID
END
ELSE
BEGIN
INSERT INTO Studenthistory (StudentID, SchoolYear, Levels)
VALUES (@studentID, @SchoolYear, @levels)
UPDATE StudentInformation
SET FirstName = @FirstName,
Surname = @SurName
WHERE StudentID = @studentID
END
COMMIT TRAN
END
vb.net 代码
Using cmd As New SqlClient.SqlCommand("dbo.InsertUpdate", cn)
cmd.Parameters.AddWithValue("@studentID", frmView.dgv1.SelectedCells(0).Value)
cmd.CommandType = CommandType.StoredProcedure
cmd.Parameters.Add("@SurName", SqlDbType.VarChar, 100).Value = txtStudLN.Text
cmd.Parameters.Add("@FirstName", SqlDbType.VarChar, 100).Value = txtStudFN.Text
cmd.Parameters.Add("@SchoolYear", SqlDbType.VarChar, 100).Value = cboSchoolYear.Text
cmd.Parameters.Add("@levels", SqlDbType.VarChar, 100).Value = cboGradeLevel.Text
cmd.ExecuteNonQuery()
MsgBox("Update New record successfully")
End Using
问题:当我插入一个新的schoolyear 和level 时,我的历史记录表中没有INSERT 一个新记录。有人可以帮我修复我的代码吗?谢谢
【问题讨论】:
标签: sql-server vb.net sql-server-2008-r2