在向现有表添加列时,我遇到了这个奇怪的问题。
现有的表如下所示:
CREATE TABLE [BinaryAssets].[BinaryAssets](
[BinaryAssetId] [int] IDENTITY(1,1) NOT NULL,
[BinaryAssetStructureId] [int] NOT NULL,
[Name] [nvarchar](max) NOT NULL,
[Created_By] [int] NOT NULL,
[Created_On] [bigint] NOT NULL,
[Modified_By] [int] NOT NULL,
[Modified_On] [bigint] NOT NULL,
[Active] [bit] NOT NULL,
CONSTRAINT [PK_BinaryAsset] PRIMARY KEY NONCLUSTERED
(
[BinaryAssetId] ASC
)WITH (PAD_INDEX = OFF, STATISTICS_NORECOMPUTE = OFF, IGNORE_DUP_KEY = OFF,
ALLOW_ROW_LOCKS = ON, ALLOW_PAGE_LOCKS = ON) ON [PRIMARY]
) ON [PRIMARY]
现在,我尝试执行的 sql 如下所示:
ALTER TABLE BinaryAssets.BinaryAssets ADD
[Version] INT NOT NULL CONSTRAINT DF_BinaryAssets_Version DEFAULT 1
ALTER TABLE BinaryAssets.BinaryAssets
DROP CONSTRAINT DF_BinaryAssets_Version
当我尝试执行时,我得到一个 sqlException (参见标题)。
现在,我认为我的表没有超过 8060,那么这里有什么问题呢?奇怪的是,当我将名称从 nvarchar(max) 更改为 nvarchar(100),然后执行我的新 sql,然后将 100 更改回 MAX 时,它确实有效......这里的逻辑似乎很遥远。
有人能告诉我我在这里做错了什么吗?