【发布时间】:2015-03-11 06:27:35
【问题描述】:
现有场景:
1) 字段说明
userid varchar(12) Primary Key
2) 表包含数百万用户(数据)。
我想在不影响现有数据、约束和结构的情况下将用户 ID 大小更改为 varchar(20)?
如何在 oracle,mssql and mysql 中实现这一点?
【问题讨论】:
-
当您对增加 varchar 大小的列进行简单更改时,您预见到什么损害/影响?
-
你为什么不直接改变表格?增加尺寸不会造成任何损坏。为什么不考虑使用整数作为主键而不是文本值
-
如果我没记错的话,在 MS SQL 上更改列的数据类型需要 DROP 使用它的所有索引。在 PRIMARY KEY 的情况下,它可能很难......
-
你真的必须在 MySQL、SQL Server 和 Oracle 中这样做吗?就像@Yaman 所说,你真的应该使用整数作为主键,因为这会在很大程度上减少索引并提高性能。就目前而言,您只是拥有一个设计不佳的数据库。与其添加问题,不如修复它或向您的团队提出正确的修复建议,您所有人(包括用户)都将从现在和将来的更改中受益。
-
对于 Sql Server
ALTER TABLE Tablename ALTER COLUMN userid VARCHAR(20) NOT NULL。您需要在alter中提及 NOT NULL
标签: mysql sql-server oracle