我如何使用SET IDENTITY_INSERT dbo.TableName ON
?
这是我的错误代码:
只有在使用列列表且IDENTITY_INSERT为ON时,才能指定表'tbl_PurchaseRequest'中标识列的显式值。
我在SQL Server 2014中运行此查询并显示Command successful
但仍然在C#中无效。
我的代码:
DBPurCon dbcon = new DBPurCon();
public void Purchase1 (BELPurchase BELPur)
{
SqlCommand cmd = new SqlCommand();
cmd.Connection = dbcon.getcon();
cmd.CommandType = CommandType.Text;
cmd.CommandText = "SET IDENTITY_INSERT dbo.tbl_PurchaseRequest ON";
cmd.ExecuteNonQuery();
SqlCommand cmd1 = new SqlCommand();
cmd1.Connection = dbcon.getcon();
cmd1.CommandType = CommandType.Text;
cmd1.CommandText = "INSERT INTO tbl_PurchaseRequest VALUES (@SID1,@Vendor,@Address,@Date,@Terms,@Qty1,@ITD1,@Unit,@UP1,@TP1,@ATT,@REQBY);";
cmd1.Parameters.AddWithValue("@SID1", BELPur.SID1);
cmd1.Parameters.AddWithValue("@Vendor", BELPur.Vendor);
cmd1.Parameters.AddWithValue("@Address", BELPur.Address);
cmd1.Parameters.AddWithValue("@Date", BELPur.Date);
cmd1.Parameters.AddWithValue("@Terms", BELPur.Terms);
cmd1.Parameters.AddWithValue("@Qty1", BELPur.Qty1);
cmd1.Parameters.AddWithValue("@ITD1", BELPur.ItD1);
cmd1.Parameters.AddWithValue("@Unit", BELPur.Unt1);
cmd1.Parameters.AddWithValue("@UP1", BELPur.UP1);
cmd1.Parameters.AddWithValue("@TP1", BELPur.TP1);
cmd1.Parameters.AddWithValue("@ATT", BELPur.AllTot);
cmd1.Parameters.AddWithValue("@REQBY", BELPur.ReqBy);
cmd1.ExecuteNonQuery();
}
public void Request1 (BELPurchase BELPur)
{
SqlCommand cmd2 = new SqlCommand();
cmd2.Connection = dbcon.getcon();
cmd2.CommandType = CommandType.Text;
cmd2.CommandText = "INSERT INTO tbl_RequestPreview VALUES (@ReqTit,@ReqBy,@Terms,@Unlock,@AllTot,'Request')";
cmd2.Parameters.AddWithValue("@ReqTit", BELPur.ReqTit);
cmd2.Parameters.AddWithValue("@ReqBy", BELPur.ReqBy);
cmd2.Parameters.AddWithValue("@Terms", BELPur.Terms);
cmd2.Parameters.AddWithValue("@Unlock", BELPur.Unlock);
cmd2.Parameters.AddWithValue("@AllTot", BELPur.AllTot);
cmd2.ExecuteNonQuery();
}
}
如果我在此处编写此代码,则只要点击SET IDENTITY_INSERT
按钮,它就会始终运行Purchase
查询。它只能运行一次或多次吗?
答案 0 :(得分:0)
您不应单独执行命令。您需要包含标识列名称及其值。
当我们想要插入一个Identity字段以从SQL Command而不是IDENTITY_INSERT
插入值时,我们通常需要Auto
,所以请包含request_id
及其值。
cmd1.CommandText = "SET IDENTITY_INSERT [dbo].[tbl_PurchaseRequest] ON;
INSERT INTO tbl_PurchaseRequest VALUES (@ReqID,@SID1,@Vendor,@Address,@Date,@Terms,@Qty1,@ITD1,@Unit,@UP1,@TP1,@ATT,@REQBY);
SET IDENTITY_INSERT [dbo].[tbl_PurchaseRequest] OFF;";
cmd1.Parameters.AddWithValue("@ReqID", SomeNumber++);
它只能运行一次或多次
是的,您可以在命令
之后设置OFF
多次运行它