在SQL Server中将列类型从Char更改为Varchar

时间:2014-01-08 16:02:46

标签: sql sql-server

我有一个主键'username'的表,它是'Char',我必须将其更改为varchar。 有一种方法可以做到这一点而不会丢失数据? 导致它的主键并级联所有其他表。

感谢。

2 个答案:

答案 0 :(得分:5)

如果此列是您的许多其他表引用的表上的主键,那么它将更加复杂:

  1. 删除引用该主键的所有其他表中的所有外键约束
  2. 删除表格上的主键约束
  3. 更改列的数据类型(ALTER TABLE .... ALTER COLUMN ..... VARCHAR(n) NOT NULL
  4. 重新创建主键约束
  5. 将每个引用表中每个外键列的数据类型更改为相同的数据类型
  6. 重新建立从所有其他表到新创建的VARCHAR(n)主键列的所有外键关系

答案 1 :(得分:4)

ALTER TABLE table_name  -<-- Your Table Name
 ALTER COLUMN username  VARCHAR(50) NOT NULL