添加新的可空列后,是不是需要更新某个表上的每个 C# SQL 查询?
Posted
技术标签:
【中文标题】添加新的可空列后,是不是需要更新某个表上的每个 C# SQL 查询?【英文标题】:Do I need to update every C# SQL query on a certain table after adding a new nullable column?添加新的可空列后,是否需要更新某个表上的每个 C# SQL 查询? 【发布时间】:2022-01-12 20:17:16 【问题描述】:我在一个带有 .NET C# 后端的遗留产品上工作,该后端不使用 ORM 来读取/更新我们的数据库。查询是用 C# 编写的,在 .NET SQL 客户端上调用,直接使用 SQL 编写如下:
var query = "INSERT INTO table (column1, column2, column3)" +
"VALUES (@value1, @value2, @value3)" ;
我必须向表中添加一个新的可为空的列,并将在几个查询中将该列包含一个值。它是一个位值,默认为空。
我是否必须更新调用该表的每个查询以包含新列?还是我只在需要的地方添加它是安全的?
【问题讨论】:
因为可以为空,所以可以省略。 来自INSERT
TSQL docs:“如果列不在 column_list 中,则数据库引擎必须能够根据列的定义提供一个值 [.. .] 如果列:[...] 具有默认值。使用列的默认值。[...] 可以为空。使用空值。"
当心SELECT *
查询,它们会返回额外的列。此外,您应该在所有引用该表的视图和过程上使用 sp_recompile
【参考方案1】:
由于新列有一个默认值,插入时将始终使用该值,即使查询中未使用新列。
你基本上是安全的。使用直接的 ADO.Net 基本上会给您带来很大的优势,不仅在速度方面,而且在常识方面。在这种情况下,一些 ORM 会崩溃
【讨论】:
某些 ORM 在这种情况下会崩溃 - 你有例子吗?以上是关于添加新的可空列后,是不是需要更新某个表上的每个 C# SQL 查询?的主要内容,如果未能解决你的问题,请参考以下文章