我有几个表具有GUID作为唯一标识符。因此我使用'OUTPUT插入。
Id'方法返回插入的id。
除非插入因任何原因失败(在本例中为FK约束),否则这种方法非常有效。我没有得到关于失败查询的任何反馈,它只是继续,好像什么也没发生。
我的查询或代码中没有任何try-catch块,因此查询应该(至少在我看来)会抛出错误。
我试图在同一个查询中自己引发错误,但什么都没发生。 我还尝试删除'OUTPUT inserted.Id',然后查询引发错误。构建一个包含和不包含事务的try-catch块也无济于事。
我正在使用SQL Server 2012,并且正在使用c#.NET 4.0(VS2012)进行开发。
示例查询
INSERT INTO Customer (Name, City, Country) OUTPUT inserted.Id VALUES ('John', 'London', 'UK');
表格布局
Id uniqueidentifier (Primary Key) Default (newid()),
Name varchar(50),
City varchar(50),
Country varchar(2)
根据我在网上发现的样本,它应该引发错误,我在这里做错了什么?我是否错过了SQL Server中的设置?
答案 0 :(得分:1)
原来我在我的代码中使用了错误的方法。我正在使用
SqlCommand com = new SqlCommand("...");
com.ExecuteReader()
虽然我应该使用
SqlCommand com = new SqlCommand("...");
com.ExecuteScalar()
根据Microsoft支持员工(以及他提到的文档),这是这些方法的正确行为,即使它不是预期的。