【问题标题】:Altering a Table Column to Accept More Characters更改表格列以接受更多字符
【发布时间】:2010-02-17 14:17:37
【问题描述】:

Microsoft SQL Server 2008 更改现有列以允许更多字符的命令是什么?如果我只是扩展它,这会对列中的任何先前条目产生影响吗?

我有一个 URL 列,需要添加大约 100 个字符。

【问题讨论】:

    标签: sql sql-server-2008


    【解决方案1】:
    ALTER TABLE [table] ALTER COLUMN [column] NVARCHAR(newsize)
    

    增加大小不会影响您的数据。

    【讨论】:

    • 您也应该指定 NULL 或 NOT NULL,以确保不会同时更改可空性。
    【解决方案2】:
    ALTER TABLE myTable ALTER COLUMN myColumn varchar(100)
    GO
    

    这不会涉及丢失数据的风险,因为您正在扩展列的大小。

    【讨论】:

      【解决方案3】:
      ALTER TABLE tab ALTER COLUMN c VARCHAR(200)
      

      【讨论】:

        【解决方案4】:

        您可以使用 SQL Server Management Studio 生成代码来自己执行此操作。只需在设计器中修改表格,使列更宽,然后单击“生成更改脚本”(在“表格设计器”菜单下)。

        根据您所做的更改,修改表的代码可能相当复杂。

        【讨论】:

        • 这并不总是最好的方法。如果由于某种原因更新失败,它通常会破坏你所有的外键。此外,如果您有 FILESTREAM 字段,它将删除文件流关联。一般来说,设计器是您最不想尝试修改表格的地方。
        • 顺便说一句,原因是设计者首先删除所有外键引用,然后删除旧表,然后在其位置创建一个新表,然后将数据放回原处,最后添加外键引用。如果失败,它不会回滚整个事务。至于文件流,设计者对此一无所知。因此,当它重新创建表时,它会忽略该部分。
        • 我发现设计器是学习如何编写 DDL 脚本的好方法。后来,我发现设计器是学习如何编写 DDL 脚本的好方法。
        【解决方案5】:

        很简单:

        ALTER TABLE <table_name> MODIFY <column_name> VARCHAR(100)
        

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 1970-01-01
          • 2012-05-24
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2012-10-31
          相关资源
          最近更新 更多