sql-server - 无法将“NULL”值插入 SQL Server 列
问题描述
我有一个使用存储过程填充的表。此存储过程使用从另一个数据库调用属性的视图。
为了说明,它类似于:
ALTER PROCEDURE theSp
AS BEGIN
INSERT INTO dbo.theTable (attr1, att2, amount, attr4)
SELECT attr1, attr2, amount, attr4
FROM theView
END
视图是这样定义的:
select attr1, attr2, amount, attr4
from db1.theTable
where date >='anyDate'
并且正确插入了值,但是如果以这种方式使用视图:
select attr1, attr2, amount, attr4
from db2.theTable
where date >='anyDate'
显示此消息:
检查身份信息:当前身份值'1252'。
DBCC 执行完成。如果 DBCC 打印错误消息,请联系您的系统管理员。消息 515,级别 16,状态 2,过程 theSp,第 16 行
无法将值 NULL 插入到列 'amount',表 'db2.dbo.theTable';列不允许空值。插入失败。
注意:db1 和 db2 表的“金额”属性允许为空,但我从不插入空,而是插入 0。
所以我过滤检查金额属性是否为空,我没有得到结果,这意味着金额属性中没有空值。
有谁知道可能的解决方案?
解决方案
通过查看您发布的错误消息
无法将值 NULL 插入到列 'amount'、表 'db2.dbo.theTable' 中;列不允许空值。插入失败。该语句已终止。
“db2.dbo.theTable”中的列有一个Null
值。amount
您可以使用ISNULL()来摆脱这个问题。
如果你想查看这些NULL
值,你必须使用查询
select * from db2.dbo.theTable where amount IS NULL
看看is Null vs =Null看看为什么您在之前的查询中没有看到那些空记录。
推荐阅读
- asp.net-core - 使用 FireFox + IIS + https + Windows 身份验证发布大尺寸 (1MB) 时出现 HTTP 错误 400
- python - 忽略基于周围字符的正则表达式拆分中的案例
- tensorflow - Keras 问题:AttributeError: 'Tensor' object has no attribute '_keras_history' 通过拟合 BiLSTM-CRF
- c - 编写 C 代码时 VS Code 中的权限被拒绝
- php - PHP shell_exec() 返回与 SSH 终端不同的结果
- javascript - ExpressJS 中间件被调用了两次
- capacitor - 电容器框架你好世界基本的html不工作
- python - 如何正确地将 h5 文件转换为 pb
- javascript - 如何使用 App 脚本为缺少的单元格内容插入空白占位符数据?
- php - 方法 Illuminate\Support\Collection::paginate 不存在