ALTER TABLE 只允许添加满足下述条件的列: 列可以包含 Null 值;或者列具有指定的 DEFAULT 定义;或者要添加的列是标识列或时间戳列;或者,如果前几个条件均未满足,则表必须为空以允
来源:互联网 发布:js判断符号不等于 编辑:程序博客网 时间:2024/05/21 05:43
执行SQL语句:ALTER TABLE T ADD E NVARCHAR(20) NOT NULL;
报错:
消息 4901,级别 16,状态 1,第 1 行
ALTER TABLE 只允许添加满足下述条件的列: 列可以包含 Null 值;或者列具有指定的 DEFAULT 定义;或者要添加的列是标识列或时间戳列;或者,如果前几个条件均未满足,则表必须为空以允许添加此列。不能将列“E”添加到非空表“T”中,因为它不满足上述条件。
出错原因:该表里已经有数据了,所以再添加字段时,已经有的数据该字段应该是空,但是我们添加字段时设定的是非空,所以就矛盾了,报错了。
如:查看该表T,已经有数据了
USE TEST;
SELECT *FROM T;
ID EEE NAME
1 NULL NULL
2 NULL NULL
3 NULL NULL
4 NULL NULL
7 NULL NULL
解决办法:先将该列设为允许为空,进行添加,然后将已经有的该数据更新成具体的非空值,然后再修改该列的属性为非空,这样,再插入非空的值就行了。
如:
ALTER TABLE T ADD E NVARCHAR(20) NULL;--先将该列设为允许为空,进行添加
UPDATE T SET E='DAN'--将已经有的该数据更新成具体的非空值
ALTER TABLE T ALTER COLUMN E NVARCHAR(20) NOT NULL;--修改该列的属性为非空
INSERT INTO E(ID,E) VALUES(8,'DAN')--成功插入
- ALTER TABLE 只允许添加满足下述条件的列: 列可以包含 Null 值;或者列具有指定的 DEFAULT 定义;或者要添加的列是标识列或时间戳列;或者,如果前几个条件均未满足,则表必须为空以允
- mongodb查询部分满足条件的列
- ALTER TABLE通过更改、添加、除去列和约束,或者通过启用或禁用约束和触发器来更改表的定义
- ORA-01758: 要添加必需的 (NOT NULL) 列, 则表必须为空
- MySQL alter Table添加列的性能
- 使用javascript动态添加或删除table的行或者列
- 给DataGrid中满足条件的超链接列加颜色
- nvarchar2转化为clob的方法或者“要修改数据类型,则要更改的列必须为空"
- DB2 SQL0613N 标识的主键、唯一键或表分区键太长或者包含太多的列和时间段。
- 查询表中的标识列或者Guid列
- Shell命令--怎么统计文本中第一列数据满足指定条件的行数
- 删除DataFrame中值全为NaN或者包含有NaN的列或行?
- 根据文件的某一列的值满足条件,取出一行的内容
- alter table 添加单列与多列的区别
- DataGrid 滚动特定的行或者列
- mysql指定某行或者某列的排序
- Report Server 2008中隐藏值为NULL的行或者列
- sql语句为某一列添加或者删除某些字段
- java迭代器
- Centos分区心得
- 만물(萬物)은 모두 반생(反生)
- Android EditText输入框 软键盘
- javascript 简单缓存应用
- ALTER TABLE 只允许添加满足下述条件的列: 列可以包含 Null 值;或者列具有指定的 DEFAULT 定义;或者要添加的列是标识列或时间戳列;或者,如果前几个条件均未满足,则表必须为空以允
- linux相关知识之特殊符号做目录
- 基于visual Studio2013解决C语言竞赛题之0614递归大元素
- linux修改系统时间和bios时间一致
- 권력(權力)과 도덕(道德)
- jaxb代码
- Linux查看系统信息的一些命令及查看已安装软件包的命令(转)
- ios 解析HTML
- Maven 的安装与eclipse的集成