sql - Sql Server 删除在哪里
问题描述
我已经阅读了很多关于这个主题的帖子。
我正在尝试在真实桌子上执行以下操作:
DELETE FROM MYTABLE WHERE ID in (...)
where in子句可以包含 1,2 或多个 (>3000) 值(源自 c# 中的列表)
我没有关于触发器的问题,FK...
我找不到使用临时表表值或类型的完整示例。而且我无法理解如何在临时表/表值/类型中插入(3000 条记录)而不会出现性能问题。我已经明白之后要加入。
如果可能的话,我会避免存储过程
解决方案
请参阅使用 ADO.Net 传递表值参数,这是该答案的来源。
在 SQL Server 中创建类型:
CREATE TYPE [dbo].[MyDataType] As Table ( cust_id INT )
在 C# 中创建数据表:
DataTable myDataTable = new DataTable("dbo.MyDataType"); myDataTable.Columns.Add("cust_id", typeof(Int32)); myDataTable.Rows.Add(1); myDataTable.Rows.Add(2);
创建 SQL 参数并执行查询:
using(var command = new SqlCommand(connection, "DELETE FROM MYTABLE WHERE EXISTS (SELECT 1 FROM @myData WHERE cust_id = ID)")) { SqlParameter parameter = new SqlParameter(); parameter.ParameterName = "@myData"; parameter.SqlDbType = System.Data.SqlDbType.Structured; parameter.Value = myDataTable; command.Parameters.Add(parameter); // execute delete command.ExecuteNonQuery(); }
推荐阅读
- python - 绘图显示在 jupyter 笔记本中,但未显示在 py 文件中
- laravel - Laravel - Vue JS 兄弟组件通信
- pug - 阻止内容呈现在错误的位置
- python - 我可以从没有任何 HTML 页面的 Anaconda 提示符下运行的烧瓶应用程序中弹出交互式 matplotlib 图吗
- javafx - JavaFX 在后台使用什么来播放声音?
- awesome-wm - 如何使鼠标事件传播到“滚动”容器中的小部件?
- python - 如何在 Python 中创建 JSON 可编码的动态字符串
- python - 导入 cythonized 代码时出现错误“动态模块未定义模块导出功能”
- elasticsearch - Elasticsearch 将名称与首字母匹配
- python - AttributeError:“模块”对象在运行烧瓶项目的主 python 文件时没有属性“getargspec”