问题

向已有表增加字段

执行下面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'的更多相关文章

  1. "不能将值 NULL 插入列 'ID',表 列不允许有 Null 值."

    问题: "不能将值 NULL 插入列 'ID',表 列不允许有 Null 值." 原因: 在进行表创建的时候没有将主键自增字段添加标识. 在使用navicat进行表创建的时候一定要 ...

  2. Laravel5.5 数据库迁移:创建表与修改表

    数据库迁移是数据库的版本管理,要使用数据库迁移,需要在.env文件中连接好数据库(不多说).laravel本身已经存在user表和password_resets表的迁移了,因此,执行 php arti ...

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

    在用SQL语句创建SQL Server作业时有时出现如下错误: 消息 515,级别 16,状态 2,过程 sp_add_job,第 137 行 不能将值 NULL 插入列 'owner_sid',表  ...

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

    一.问题 1. 不能将值NULL插入列"Oid" 二.解决方法 解决方法:删表,oid不能为空,继承的对象变了

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

    1.创建数据库表 --使用哪个数据库,如果不写这一句是默认的数据库,也可以用鼠标选当前数据库 use testDB --创建表    Create Table tablename    (       ...

  6. oracle 创建表,删除表,修改表,查询表

    1,获取当前用户下的所有表信息 =>  SELECT * FROM user_tables 1.1,查询某一张表的字段信息:SELECT  *  FROM user_tab_columns  w ...

  7. Oracle创建表、修改表、删除表、约束条件语法

    一. 使用create关键字创建表 --(1)创建新表use 数据库(在那个数据库中建表)create table 表名(字段名1(列名) 数据类型 列的特征,字段名2(列名) 数据类型 列的特征(N ...

  8. Oracle创建表、删除表、修改表(添加字段、修改字段、删除字段)语句总结

    创建表: create table 表名 ( 字段名1 字段类型 默认值 是否为空 , 字段名2 字段类型 默认值 是否为空, 字段名3 字段类型 默认值 是否为空, ...... ); 创建一个us ...

  9. mysql——创建表、修改表、删除表(概念详细讲解)

    一.创建一个数据表 create table 表名 ( 列名1 数据类型1 [完整性约束条件], 列名2 数据类型2 [完整性约束条件], 列名3 数据类型3 [完整性约束条件], 列名4 数据类型4 ...

随机推荐

  1. 039--CSS

    一.CSS定义 CSS 规则由两个主要的部分构成:选择器,以及一条或多条声明. ''' selector { property: value; property: value; ... propert ...

  2. kali的更新源

    先安装的系统最好更新更新 apt-get update apt-get upgrade 因为默认会去国外的网站去下载....慢 为了速度 可以修改更新源 vim /etc/apt/sources.li ...

  3. MFC类别概述

    MFC 类别主要可分为下列数大群组: ■ General Purpose classes - 提供字符串类别.数据处理类别(如数组与串行),异 常情况处理类别.文件类别...等等. ■ Windows ...

  4. Codeforces626B - Cards【模拟】

    题意: 两张相同可以合并成相同: 两张不同可以产生另外一个不同: 求最终的可能颜色: 思路: 模拟啊. 总共也就那么几种情况,具体看挫code--. #include<iostream> ...

  5. Python中lambda表达式的应用

    lambda表达式 Python中定义了一个匿名函数叫做lambda表达式,个人理解实现的作用就是代替一些简单的函数,使得代码看上去更简洁并且可读性高.举个例子,我们有一个元组列表[(‘a’,1),( ...

  6. 莫队初探(不带修/例题极少)By cellur925

    因为今天考到莫队裸题了嘤嘤嘤...而我这样的蒟蒻肯定不会这样的高端算法啊QAQ.于是暴力水了40分qwq. 正如上文所说,我实在太菜了,于是学习莫队也只是学习了最简单的不带修普通莫队,如果我能苟到省选 ...

  7. 浅谈单调栈 By cellur925

    这位dalao的单调栈文章很棒!我写的是他的题单233. http://www.cnblogs.com/COLIN-LIGHTNING/p/8474668.html 一.单调栈的一般写法 ;i< ...

  8. 【算法】LRU算法

    缓存一般存放的都是热点数据,而热点数据又是利用LRU(最近最久未用算法)对不断访问的数据筛选淘汰出来的. 出于对这个算法的好奇就查了下资料. LRU算法四种实现方式介绍 缓存淘汰算法 利用Linked ...

  9. mac 配置nginx 虚拟域名(转载)

    我是通过homebrew 安装nginx 的,所以安装目录是默认的,之前多个server都是放在默认安装目录下的nginx.conf里的,但是这样不太好,就是会导致nginx.conf 越来越长,而且 ...

  10. c++模板专门化

    #include <iostream> #include<cstring> using namespace std; template <typename T> T ...