如何使用索引更改表的列?

时间:2017-04-10 09:05:35

标签: sql sql-server database tsql alter-table

我想更改表中a列的列大小,其中一些索引从varchar(200)更改为varchar(8000)。我该怎么办?

3 个答案:

答案 0 :(得分:9)

由于VARCHAR而且您正在增加尺寸,因此只需ALTER TABLE ... ALTER COLUMN ...即可。

  

索引中包含的列的数据类型不能更改,除非列是varchar,nvarchar或varbinary数据类型,并且新大小等于或大于旧大小。

否则你会丢弃索引,改变列,然后加回索引。

请注意,虽然SQL Server maximum index key size是900(或者是新版本的1700),但即使ALTER成功,未来INSERT也是如此  超过900长度限制的数据将失败并显示错误:

Msg 1946, Level 16, State 3, Line 13
Operation failed. The index entry of length ... bytes for the index '...' exceeds the maximum length of 900 bytes.

答案 1 :(得分:0)

尝试使用MSSQL:

drop index person.idx_pers_fullname
ALTER table person alter COLUMN  pers_firstname nvarchar(8000)
create index idx_pers_fullname on person(pers_firstname)

答案 2 :(得分:-2)

Oracle中的示例:

CREATE TABLE EMP (NAME VARCHAR(200));

ALTER TABLE  EMP MODIFY  NAME VARCHAR(800);