在SQL Server 2005中将字段类型从nvarchar(255)更改为nvarchar(Max)

suh*_*ite 5 sql-server-2005

我想更改table中的列类型stk020。所以,我用这个查询..

ALTER TABLE [stk020] 
ALTER COLUMN [t16] nvarchar(Max) not null 
Run Code Online (Sandbox Code Playgroud)

的原始列类型[t16]nvarchar(255)。我得到这个错误

消息5074,级别16,状态1,行1
对象'DF_ STK020 _t16__725CC34D'取决于列't16'。
消息4922,级别16,状态9,第1行,
ALTER TABLE ALTER COLUMN t16失败,因为一个或多个对象访问此列。

有什么办法吗?

Tho*_*mas 5

您必须先在列上删除我们假定的默认约束,然后才能更改其数据类型:

Alter Table stk020 Drop Constraint DF_STK020_t16__725CC34D
GO
Alter Table stk020 Alter Column t16 nvarchar(max) not null
GO
Alter Table stk020 Add Constraint DF_STK020_t16__725CC34D
    Default ... For t16
Run Code Online (Sandbox Code Playgroud)

  • 当然,对默认约束使用**更有意义的名称**(例如DF_STK020_T16或类似的名称)会有用,而不是使用经过整改且难以读取的系统名称 (2认同)