【问题标题】:Cant add column with out dropping table in sql server [duplicate]无法在sql server中添加列而不删除表[重复]
【发布时间】:2017-10-19 14:20:26
【问题描述】:

我有一个有 1 亿行的生产表,出于报告目的,我们需要添加一个额外的列,该列将是一个数字 (18,0)。显然 SQL 不允许我添加该列而不删除表。我可以在不影响数据的情况下做到这一点吗?

【问题讨论】:

  • 如果你通过alter table添加应该没问题。如果您正在使用设计器,并且特别是如果您试图将其“定位”到除最后一列之外的任何位置,那么设计器可能会选择删除/创建。

标签: sql-server ddl alter-table


【解决方案1】:

您可以在不删除表格的情况下添加列。

ALTER TABLE YourTable
ADD  SomeColumnName NUMERIC(18,0)

更新

如果您想要列 NOT NULL,那么您必须先使其接受 NULL,然后通过更新设置值,最后将列更改为 NOT NULL

或者设置一个默认值比如

ALTER TABLE YourTable
ADD SomeColumnName DECIMAL(18,0) NOT NULL DEFAULT 1

【讨论】:

  • 就这样?如果那不会放下我的桌子而只添加新列,我会很高兴。试一试!谢谢
  • 我试过了,但结果是一样的......当我运行这样的语句 ALTER TABLE YourTable ADD SomeColumnName NUMERIC(18,0) 它抛出了一个错误 Msg 4901, Level 16, State 1 ,第 1 行 ALTER TABLE 仅允许添加可以包含空值或指定了 DEFAULT 定义的列,或者要添加的列是标识列或时间戳列,或者如果前面的条件都不满足,则表必须为空允许添加此列....
  • ALTER TABLE [dbo].[obligations_monthend_snapshots] ADD [417_number] Numeric(18,0) NOT NULL
  • 我在这里很新,我需要更多的声望才能加入聊天猜测。
  • @SQLHunter 请查看更新后的答案。
猜你喜欢
  • 1970-01-01
  • 2019-06-23
  • 1970-01-01
  • 2017-06-15
  • 1970-01-01
  • 2015-09-08
  • 2014-01-11
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多