向SQL Server表中添加列是否存在问题

本文关键字:是否 存在 问题 添加 SQL Server | 更新日期: 2023-09-27 18:26:55

我编写了一个C#程序,该程序使用一个小表来获取根据客户读取文件和记录所需的文件夹路径。现在需要写入远程,并且需要使用不同的文件夹。

这个应用程序将进入一个电子商务中心网站,并从为我们停放的商店获得订单。

目前的表格是这样的

[Id](PK,INT, not Null)
[FolderName] (nvarchar, max, not full)
[FilePath](nvarchar, max, not full)
[FolderNameAlias](nvarchar, max, not full)

数据是这样的

Id  FolderName  FilePath    FolderNameAlias
1   BESTBUY    ''SERVER02'AR'IBS'DATA'ORDERS'BESTBUY'   BESTBUY

该CCD_ 1是放置所获得的记录的路径。

现在我想添加一个文件夹,我们把船确认到这个枢纽网站。我想知道,如果添加一个或两个新列,我是否必须在我的当前代码中做任何事情,这些代码在编码之前不会使用新列,但仍在生产中?

向SQL Server表中添加列是否存在问题

根据您的评论,只要您没有使用select *,并且您只是在阅读或更新,而不是插入,您就应该能够添加一个新列,而不会破坏您的旧列。

您可以INSERT,但必须使用显式列命名,并且必须为新列设置默认值或允许NULL,例如

INSERT INTO YourTable (ID, FolderName, FilePath, FolderNameAlias) 
    VALUES (@ID, @FolderName, @FilePath, @FolderNameAlias)

只要您的新列具有关联的默认约束或允许NULL,则上面的插入不会中断,但是下面的插入将与定义的默认值收支平衡,因为如果您不指定列,SQL Server希望每个列都包含在插入中。

INSERT INTO YourTable VALUES (@ID, @FolderName, @FilePath, @FolderNameAlias)

唯一知道的方法是对当前代码进行审计。

您需要检查当前代码。如果当前代码的每个select语句都没有通配符,而是指定了列,则这些语句将起作用。

如果Insert语句包含列列表,并且在添加的新列中允许null值或默认值,那么它们也会起作用。