SQL - 添加新列而不影响现有脚本

时间:2018-05-23 03:09:00

标签: sql sql-server alter-table

我们在SQL Server 2008上有一个表,它由各种存储过程填充。问题是这些存储过程的作者在代码中使用了一些糟糕的选择,并使用以下语法填充此表:

INSERT INTO persistant_table
    SELECT * 
    FROM #temp_table_with_data

基本上,他们会在脚本中创建#temp_table_with_data,列的顺序和名称与persistant_table中的列名相同。

现在我需要向此persistant_table添加另一列,但如果我这样做,我将打破所有存储过程。

我是否可以在不破坏所有存储过程的情况下向此表添加列? (从长远来看,我们将更改存储过程)。

谢谢

3 个答案:

答案 0 :(得分:0)

不,我认为。选择*将选择所有列和列号匹配。

我认为将行更改为仅包含特定列或选择语句以使列具有默认值或null,然后*按顺序存储到列中,我认为不是很大的努力。但至少要改变一行

答案 1 :(得分:0)

" ALTER TABLE"是一个SQL语句,允许您对数据库表进行数据类型更改(即更改数据类型以及现有表中的Size列)。

 ALTER TABLE TableName ALTER COLUMN ColumnName  NVARCHAR(200)

答案 2 :(得分:0)

如果不影响旧脚本,则无法执行此操作。这就是为什么' SELECT *'不是好习惯。您最好使用显式列名创建新脚本 SELECT column1,column2 ....