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

use*_*810 6 sql sql-server

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

谢谢.

M.A*_*Ali 6

ALTER TABLE table_name  -<-- Your Table Name
 ALTER COLUMN username  VARCHAR(50) NOT NULL
Run Code Online (Sandbox Code Playgroud)


mar*_*c_s 5

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

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