【问题标题】:update nvarchar not null field length更新 nvarchar 非空字段长度
【发布时间】:2014-03-20 11:12:45
【问题描述】:

如果创建时为空,我可以更新列的长度

MYCOLUMN1 nvarchar(12) NULL

我的查询:

Alter table MYTABLE ALTER Column MYCOLUMN1 nvarchar(13) NULL

但是如果列不为空,我该如何更改长度?

MYCOLUMN2 nvarchar(12) NOT NULL

Alter table MYTABLE ALTER Column MYCOLUMN2 nvarchar(13) NOT NULL

当我尝试这样做时,SQL Server 会说

消息 4902,第 16 级,状态 1,第 1 行
找不到对象“MYCOLUMN2”,因为它不存在或您没有权限。

我有权限,因为我是管理员并且表格的列确实存在。

感谢您的回复... 这是表结构

CREATE TABLE [dbo].[MYTABLE](
    [MyKey] [int] IDENTITY(1,1) NOT NULL,
    [mycolumn1] [nvarchar](12) NULL,
    [mycolumn2] [nvarchar](12) NOT NULL,

 CONSTRAINT [PK_MYTABLE] PRIMARY KEY CLUSTERED 
(
    [MyKey] ASC
)WITH (PAD_INDEX = OFF, STATISTICS_NORECOMPUTE = OFF, IGNORE_DUP_KEY = OFF, ALLOW_ROW_LOCKS = ON, ALLOW_PAGE_LOCKS = ON) ON [PRIMARY]
) ON [PRIMARY]

【问题讨论】:

  • 将您的表格也发布到您的问题中
  • 您确定您的表中有“mycolumn2”列吗?
  • 看起来列名拼写错误或在表中不存在。
  • 只需使用ALTER TABLE dbo.MYTABLE ALTER COLUMN MYCOLUMN2 NVARCHAR(13) NOT NULL - 如果之前是NOT NULL,只需在您的ALTER TABLE 命令中再次使用NOT NULL ....

标签: sql-server null alter-table


【解决方案1】:

列名区分大小写。请尝试

Alter table MYTABLE ALTER Column [mycolumn2] nvarchar(13) NOT NULL

我已经尝试过了,它在 sqlserver2012 上运行良好。

【讨论】:

    猜你喜欢
    • 2017-11-05
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-05-28
    相关资源
    最近更新 更多