请大神帮我看一下到底哪里有问题?语句如下
insert into ip_varnc_mon_trgt201911 (MAX_QTY_CHAR)
select max_value from om_target_phdvalue b ,ip_varnc_mon_trgt201911 a
where b.trgt_name= a.trgt_name(+)
and max_value is not null
and min_value is not null
使用这个语句执行的时候报错 ora-01400 说是无法将NULL插入,但是我已经去n除null了。而且我是想插入到MAX_QTY_CHAR这个字段,为什么报错说是TRGT_NAME
字段呢?这个报错信息,我百度了一下说是要创建触发器或者是序列,我照着做了还是不行。麻烦大神帮我看一下,谢谢您的帮助!或者还有哪个语句可以完成我的需求,请您指导一下。
你的 ip_varnc_mon_trgt201911表应该有MAX_QTY_CHAR、TRGT_NAME两个字段
而TRGT_NAME字段你应该设置了不能为NULL,所以失败了
因为
insert into ip_varnc_mon_trgt201911 (MAX_QTY_CHAR)
是插入一条完整的数据的,所以它默认了除了MAX_QTY_CHAR字段的值都为NULL的
用更新的话,不知道对不对
UPDATE ip_varnc_mon_trgt201911 c LEFT JOIN (
select max_value ,b.trgt_name from om_target_phdvalue b ,ip_varnc_mon_trgt201911 a
where b.trgt_name= a.trgt_name(+)
and max_value is not null
and min_value is not nul
) d ON c.trgt_name = d.trgt_name SET c.MAX_QTY_CHAR = d.max_value;
你可以参考下
https://blog.csdn.net/qq_38486203/article/details/80015250
把查询结果拿出来看下是不是有什么问题,我觉得你这里可能后面两张表都有max_value这个字段,导致实际插入的是b表的字段,看sql的话我觉得没什么问题,要说有问题的话就把后面的查询嵌套一层select,另外一种可能是这个插入的表字段有限制,是一个自增长字段或者其他限制,要不就把你的数据改规范,要不就把他的限制先关掉。