C# 为什么sql删除查询不起作用
我有一个表C# 为什么sql删除查询不起作用,c#,C#,我有一个表table1,其中包含字段id(int),name(nchar),grade(real)。 以下代码不起作用。没有错误或警告。代码执行良好,但受影响的行数=0 MsSql服务器 sqlConnection1.Open(); SqlCommand cmd = new SqlCommand("Delete from [table1] where [id] = 1", sqlConnection1); int c = cmd.ExecuteNonQuery(); sqlConnection1
table1
,其中包含字段id(int)
,name(nchar)
,grade(real)
。
以下代码不起作用。没有错误或警告。代码执行良好,但受影响的行数=0
MsSql服务器
sqlConnection1.Open();
SqlCommand cmd = new SqlCommand("Delete from [table1] where [id] = 1", sqlConnection1);
int c = cmd.ExecuteNonQuery();
sqlConnection1.Close();
所有其他查询都运行良好。我知道这听起来可能很愚蠢,但调用中是否有ID为1的数据?您能看到它通过SQL探查器执行吗?如果通过SSMS执行,会发生什么情况?我知道这听起来可能很愚蠢,但调用中是否有ID为1的数据?您能看到它通过SQL探查器执行吗?如果通过SSMS执行,会发生什么情况?思考:
- 是否有[id]1的行
- 你有正在发射的扳机吗
- 是否有[id]1的行
- 你有正在发射的扳机吗
我猜是第二个。。。这个数字是在考虑触发器之后的,是上次操作的行数。在Sql Management studio中运行查询时是否有效?在Sql Management studio中运行查询时是否有效?是对其他人已经提出的问题的略微扩展。您确定目标表中有要删除的记录吗?此外,您是否确定从正确的数据库获取了表?例如,默认值可能是tempdb,并且恰好有一个具有目标名称和id列的表 首先从SQL提示符中进行选择,以确保存在您要查找的类型的项:
从[database].[schema].[table1]中选择前10个*,其中[id]=1
如果这提供了结果,请尝试更改您的命令,以明确说明数据库和架构:
从[database].[schema].[table1]中删除,其中[id]=1
对其他人已经提出的问题稍作扩展。您确定目标表中有要删除的记录吗?此外,您是否确定从正确的数据库获取了表?例如,默认值可能是tempdb,并且恰好有一个具有目标名称和id列的表
首先从SQL提示符中进行选择,以确保存在您要查找的类型的项:
从[database].[schema].[table1]中选择前10个*,其中[id]=1
如果这提供了结果,请尝试更改您的命令,以明确说明数据库和架构:
从[database].[schema].[table1]中删除,其中[id]=1
除了Marc Gravell关于触发器的评论之外,您还应该检查是否存在带有ON DELETE RESTRICT`的外键约束(并且错误消息在到达您之前不知何故消失了…)除了Marc Gravell关于触发器的评论之外,您还应该检查,如果存在带ON DELETE RESTRICT`的外键约束(并且错误消息在发送给您之前以某种方式消失…可能是愚蠢的注释,但是否有Id 1?看起来没有Id为1的记录?可能是愚蠢的注释,但是否有Id为1?看起来没有Id为1的记录用于触发器。OP还应检查删除限制上的
外键。+1用于触发。OP还应检查删除限制外键时的。
SELECT TOP 10 * FROM [database].[schema].[table1] WHERE [id] = 1
DELETE FROM [database].[schema].[table1] WHERE [id] = 1