更改表中的数据类型而不会丢失现有列

时间:2014-10-13 22:20:21

标签: sql-server

我有一个包含varch(2)列的表,需要将其更改为Varchar(3)或4.我是否需要创建一个新列并将数据从旧数据复制到新数据?新的传入数据需要更大的colunm。它来自OH和EI,需要适应TBO和IEP。

2 个答案:

答案 0 :(得分:1)

只做

   ALTER TABLE T ALTER COLUMN YourCol VARCHAR(4) NOT NULL

这是仅元数据更改,而不是数据更改的大小。

如果合适,请将NOT NULL更改为NULL

答案 1 :(得分:1)

不,您应该可以使用以下命令更改现有varchar(2)列的宽度:

ALTER TABLE your_table ALTER COLUMN your_column VARCHAR(4) [NOT] NULL 
-- new type at the end, NULL or NOT NULL as needed.

反过来说不起作用,因为服务器不允许缩小可能导致截断。

如果在PRIMARY KEY或[FOREIGN KEY] REFERENCES约束中使用该列,则不允许更改。