我有一个包含varch(2)列的表,需要将其更改为Varchar(3)或4.我是否需要创建一个新列并将数据从旧数据复制到新数据?新的传入数据需要更大的colunm。它来自OH和EI,需要适应TBO和IEP。
答案 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约束中使用该列,则不允许更改。