我想更改表中a列的列大小,其中一些索引从varchar(200)更改为varchar(8000)。我该怎么办?
答案 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);