“xxxx”表 - 无法修改表。 不能将值 NULL 插入列 'xxxx'

问题

向已有表增加字段

执行下面sql,sql执行增加两个字段分别:

  1. articleTitle 正标题 [nvarchar](200)
  2. articleSubTitle 副标题 [nvarchar](200)
USE [tg_thirdparty]
GO

/****** Object:  Table [dbo].[WX_Activity]    Script Date: 10/31/2018 10:54:46 ******/
SET ANSI_NULLS ON
GO

SET QUOTED_IDENTIFIER ON
GO

SET ANSI_PADDING ON
GO

IF NOT EXISTS ( SELECT  1
                FROM    SYSOBJECTS T1
                        INNER JOIN SYSCOLUMNS T2 ON T1.ID = T2.ID
                WHERE   T1.NAME = ‘WX_Activity‘
                        AND T2.NAME = ‘articleTitle‘ )
    BEGIN

        ALTER TABLE [dbo].[WX_Activity] ADD [articleTitle] [nvarchar](200) NOT   NULL
        --ALTER TABLE [dbo].[WX_Activity] ADD  CONSTRAINT [DF_WX_Activity_articleTitle]  DEFAULT (‘‘) FOR [articleTitle]
        --ALTER TABLE [dbo].[WX_Activity] ALTER COLUMN [articleTitle] [nvarchar](200) NOT NULL

        EXEC sys.sp_addextendedproperty @name = N‘MS_Description‘,
            @value = N‘正标题‘, @level0type = N‘SCHEMA‘, @level0name = N‘dbo‘,
            @level1type = N‘TABLE‘, @level1name = N‘WX_Activity‘,
            @level2type = N‘COLUMN‘, @level2name = N‘articleTitle‘

    END

GO

IF NOT EXISTS ( SELECT  1
                FROM    SYSOBJECTS T1
                        INNER JOIN SYSCOLUMNS T2 ON T1.ID = T2.ID
                WHERE   T1.NAME = ‘WX_Activity‘
                        AND T2.NAME = ‘articleSubTitle‘ )
    BEGIN

        ALTER TABLE [dbo].[WX_Activity] ADD [articleSubTitle] [nvarchar](200) NOT  NULL
        --ALTER TABLE [dbo].[WX_Activity] ADD  CONSTRAINT [DF_WX_Activity_articleSubTitle]  DEFAULT (‘‘) FOR [articleSubTitle]
        --ALTER TABLE [dbo].[WX_Activity] ALTER COLUMN [articleSubTitle] [nvarchar](200) NOT NULL

        EXEC sys.sp_addextendedproperty @name = N‘MS_Description‘,
            @value = N‘副标题‘, @level0type = N‘SCHEMA‘, @level0name = N‘dbo‘,
            @level1type = N‘TABLE‘, @level1name = N‘WX_Activity‘,
            @level2type = N‘COLUMN‘, @level2name = N‘articleSubTitle‘

    END

GO
    

提示错误

消息 4901,级别 16,状态 1,第 10 行
ALTER TABLE 只允许添加满足下述条件的列: 列可以包含 Null 值;或者列具有指定的 DEFAULT 定义;或者要添加的列是标识列或时间戳列;或者,如果前几个条件均未满足,则表必须为空以允许添加此列。不能将列"articleTitle"添加到非空表"WX_Activity"中,因为它不满足上述条件。
消息 4901,级别 16,状态 1,第 9 行
ALTER TABLE 只允许添加满足下述条件的列: 列可以包含 Null 值;或者列具有指定的 DEFAULT 定义;或者要添加的列是标识列或时间戳列;或者,如果前几个条件均未满足,则表必须为空以允许添加此列。不能将列"articleSubTitle"添加到非空表"WX_Activity"中,因为它不满足上述条件。

解决方法:

表中已经有数据了,不设置默认值,有要求字段不能为NULL,矛盾了!!

所以先指定默认值,插入字段时,加上默认值 DEFAULT ‘‘

USE [tg_thirdparty]
GO

/****** Object:  Table [dbo].[WX_Activity]    Script Date: 10/31/2018 10:54:46 ******/
SET ANSI_NULLS ON
GO

SET QUOTED_IDENTIFIER ON
GO

SET ANSI_PADDING ON
GO

IF NOT EXISTS ( SELECT  1
                FROM    SYSOBJECTS T1
                        INNER JOIN SYSCOLUMNS T2 ON T1.ID = T2.ID
                WHERE   T1.NAME = ‘WX_Activity‘
                        AND T2.NAME = ‘articleTitle‘ )
    BEGIN

        ALTER TABLE [dbo].[WX_Activity] ADD [articleTitle] [nvarchar](200) NOT   NULL DEFAULT ‘‘
        --ALTER TABLE [dbo].[WX_Activity] ADD  CONSTRAINT [DF_WX_Activity_articleTitle]  DEFAULT (‘‘) FOR [articleTitle]
        --ALTER TABLE [dbo].[WX_Activity] ALTER COLUMN [articleTitle] [nvarchar](200) NOT NULL

        EXEC sys.sp_addextendedproperty @name = N‘MS_Description‘,
            @value = N‘正标题‘, @level0type = N‘SCHEMA‘, @level0name = N‘dbo‘,
            @level1type = N‘TABLE‘, @level1name = N‘WX_Activity‘,
            @level2type = N‘COLUMN‘, @level2name = N‘articleTitle‘

    END

GO

IF NOT EXISTS ( SELECT  1
                FROM    SYSOBJECTS T1
                        INNER JOIN SYSCOLUMNS T2 ON T1.ID = T2.ID
                WHERE   T1.NAME = ‘WX_Activity‘
                        AND T2.NAME = ‘articleSubTitle‘ )
    BEGIN

        ALTER TABLE [dbo].[WX_Activity] ADD [articleSubTitle] [nvarchar](200) NOT  NULL DEFAULT ‘‘
        --ALTER TABLE [dbo].[WX_Activity] ADD  CONSTRAINT [DF_WX_Activity_articleSubTitle]  DEFAULT (‘‘) FOR [articleSubTitle]
        --ALTER TABLE [dbo].[WX_Activity] ALTER COLUMN [articleSubTitle] [nvarchar](200) NOT NULL

        EXEC sys.sp_addextendedproperty @name = N‘MS_Description‘,
            @value = N‘副标题‘, @level0type = N‘SCHEMA‘, @level0name = N‘dbo‘,
            @level1type = N‘TABLE‘, @level1name = N‘WX_Activity‘,
            @level2type = N‘COLUMN‘, @level2name = N‘articleSubTitle‘

    END

GO
    

“xxxx”表 - 无法修改表。 不能将值 NULL 插入列 'xxxx'

原文地址:https://www.cnblogs.com/Zev_Fung/p/9882077.html

时间: 2024-08-25 04:32:52

“xxxx”表 - 无法修改表。 不能将值 NULL 插入列 'xxxx'的相关文章

不能将值 NULL 插入列 'ID',表 'EupStoreDemoDB.dbo.OrderDiary';列不允许有 Null 值。INSERT 失败。

MVC,使用EF构建实体.将数据存入数据库,执行到_db.SaveChange()时,会报如下错误: 在进行数据库数据存储时,经常会碰到这个问题,这个错误的成因有多种,上网搜解决方法,如下: 1.有说把可否为空选项设置为“可以为空”,可我这“ID”字段是主键,怎么可能设置为可空?否决 2.说把标识规范设置为“是”,如下图,但是,标识规范选择为“是”是给字段增加自增功能,这应该要求字段类型是整型吧?我的字段类型为“Guid",不能修改标识规范为”是“,所以,第二种解决方案解决不了我的问题,否决 网

创建SQL作业错误的解决方法(不能将值 NULL 插入列 'owner_sid',表 'msdb.dbo.sysjobs';列不允许有空值。)

在用SQL语句创建SQL Server作业时有时出现如下错误: 消息 515,级别 16,状态 2,过程 sp_add_job,第 137 行 不能将值 NULL 插入列 'owner_sid',表 'msdb.dbo.sysjobs':列不允许有空值.INSERT 失败. 语句已终止. 这可能与为作业创建的数据库登录ID有关,这个登录ID需要是数据库的所有者(我的是sa),因此将 @owner_login_name=N'HYSERITC003/wellcomm', 中的N'HYSERITC00

【XAF问题】不能将值NULL插入列"Oid"

一.问题 1. 不能将值NULL插入列"Oid" 二.解决方法 解决方法:删表,oid不能为空,继承的对象变了 原文地址:https://www.cnblogs.com/qy1234/p/10551249.html

MySQL学习笔记-查看表,修改表,删除表

/*看表*/ describe test --查看表的结构 show create table test --查看表的创建语句 show create table test  \G --将创建的语句查询出来,并规范化显示(只在console下支持此命令,因为只有console下会错乱显示...) /*改表*/ alter table test rename to testo; --将test改名为testo alter table example0 rename to user; select 

必须会的SQL语句(二) 创建表、修改表结构、删除表

1.创建数据库表 --使用哪个数据库,如果不写这一句是默认的数据库,也可以用鼠标选当前数据库 use testDB --创建表 Create Table tablename ( --id表示字段名 --int 数据类型 --primary key 主键 --not null 非空 --identity(1,1)初始值是1 每次自增长1 id  int primary key not null identity(1,1), --unique 唯一 name varchar(20)  not nul

15.表结构修改-修改表定义和表名

修改列定义和表名 修改列定义 ALTER  TABLE  S MODIFY  type TINYINT  UNSIGNED  NOT NULL;(modify是调整 稍作修改的意思,UNSIGNED表示是无符号的,是一个正数如果直接不用UNSIGNED,那int可以是正数负数和零) 演示: 修改表字段 --type(字段名称)  数据类型:tinyint(小整型) 默认是1 将type int ,默认值为2 ALETER TABLE member MODIFY  type  INT UNSIGN

SQL SERVER表不能修改表结构的处理方法

SQL SERVER表提示不能修改表结构,这究竟是什么原因呢?下面就为您介绍处理该问题的方法,如果您在SQL SERVER表修改方面遇到过问题,不妨一看. 新装的SQL SERVER 2008,打开原来SQL SERVER 2008中建立的表,现在想增加一些字段,在保存时提示错误,无法保存. 刚开始以为是SQL SERVER 2008与2005的不兼容,后来发现在SQL SERVER 2008中新建的SQL SERVER表也存在无法修改表结构,也就是无法修改字段名和增加字段名. 提示是:不允许保

ORACLE中创建表空间,创建表,修改表,授权

创建表空间 /*分为四步 */ /*第1步:创建临时表空间  */ create temporary tablespace user_temp tempfile 'D:\oracle\oradata\Oracle9i\user_temp.dbf' size 50m autoextend on next 50m maxsize 20480m   //如果最大值没有上限,则使用unlimited extent management local;  //extent 表示区间  设置区间管理方式是本地

使用sql语句创建表、修改表、添加列等

1. 创建表: CREATE TABLE 学生信息 (    学号 varchar(14) IDENTITY(1,1) PRIMARY KEY,    姓名 varchar(8) UNIQUE NOT NULL,    班级编号 varchar(14) REFERENCES '班级信息',    年级 int null,    性别 varchar(2) CHECK(性别in ('男’','女’)),    民族 varchar(20) DEFAULT '未知该生民族',    籍贯 varch