问题

向已有表增加字段

执行下面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. EOJ3263:丽娃河的狼人传说(贪心)

    传送门 题意 分析 考虑将区间按右端点排序,再遍历区间,操作即可 建议以加方式写 trick 1.不需要判区间重合 代码 #include<cstdio> #include<cstr ...

  2. 51nod 1138 【数学-等差数列】

    思路: 很显然每个连续的序列都是等差数列, 那么我们利用等差数列求和公式. S=(a1+a1+k-1)k/2=(2·a1+k-1)*k/2;a1是首项,k是个数. 枚举k,首项最小为1,k最大,具体不 ...

  3. python __builtins__ help类 (32)

    32.'help', 接收对象作为参数,更详细地返回该对象的所有属性和方法 class _Helper(builtins.object) | Define the builtin 'help'. | ...

  4. bzoj 4036: [HAOI2015]按位或【min-max容斥+FWT】

    其实也不是FWT--我也不知道刷FWT专题问什么会刷出来这个东西 这是min-max容斥讲解:https://www.zybuluo.com/ysner/note/1248287 总之就是设min(s ...

  5. ASP.NET Core中间件计算Http请求时间

    ASP.NET Core通过RequestDelegate这个委托类型来定义中间件 public delegate Task RequestDelegate(HttpContext context); ...

  6. SVG新手入门

    特点 矢量图 属性:形状的参数(都没有单位) 添加事件跟html一样 修改样式跟html一样 属性操作: setAttribute/getAttribute 图形 <svg width=&quo ...

  7. Oracle数据库创建表空间及用户授权

    /*分为四步 */ /*第1步:创建临时表空间 */ create temporary tablespace test_temp tempfile 'E:\app\Administrator\orad ...

  8. 排序二叉树 HDOJ 5444 Elven Postman

    题目传送门 题意:给出线性排列的树,第一个数字是根节点,后面的数如果当前点小或相等往左走,否则往右走,查询一些点走的路径 分析:题意略晦涩,其实就是排序二叉树!1<<1000 普通数组开不 ...

  9. 怎么查看这个历史最大连接session数

    select * from dba_high_water_mark_statistics;

  10. 503 Next Greater Element II 下一个更大元素 II

    给定一个循环数组(最后一个元素的下一个元素是数组的第一个元素),输出每个元素的下一个更大元素.数字 x 的下一个更大的元素是按数组遍历顺序,这个数字之后的第一个比它更大的数,这意味着你应该循环地搜索它 ...