政府机关 updateinsert

informix一个update语句报错

create temp table shh
(
bankcode CHAR(12),
BusinessCode        CHAR(15)
)
with no log;

load from jf1.unl delimiter '|'
insert into shh;

update prpjfcombus set bankcode=
(select a.bankcode from shh a
  where a.BusinessCode=prpjfcombus.BusinessCode
    );

运行上面语句报错:
391: Cannot insert a null into column (prpjfcombus.bankcode).
Error in line 4
Near character position 4

麻烦大家帮忙分析一下。

jf1.unl:
0801025500|898430159600500
0801025500|898430159604401
0801025500|898430159604501
0801025500|898430159604601
0801025500|898430159604701
0801025500|898430159604801
0801025500|898430159604901
0801025500|898430159605001
0801025500|898430159605101
0801025500|898430159605201
0801025500|898430159605301
0801025500|898430159605401
0801025500|898430163000234
0801025500|898430163000235
0801025500|898430163000236
0801025500|898430163000237
0801025500|898430163000238
0801025500|898430292231488
0801025500|898430163000239
0801025500|898430163000240
0801025500|898430163000241
0801025500|898430163000242
0801025500|898430163000243
0801025500|898430163000244
0801025500|898430163000267
0801025500|898430192230169
0801025500|898430359601506
0801025500|898430359601504
0801025500|898430359601500
0801025500|898430292231497
0801025500|898430292231491
0801025500|898430192230170
0801025500|898430192230171
参与10

10 同行回答

filvyo filvyo 系统工程师 B
jf1.unl 文件的第4行,有空值吧~ 建表将字段设置为允许为空看看?显示全部
jf1.unl 文件的第4行,有空值吧~ 建表将字段设置为允许为空看看? 收起
互联网服务 · 2011-09-28
浏览979
光洋山 光洋山 数据库架构师 金融科技公司
表结构定义与实际数据不一致问题。设计表结构式not null不是适合所有表的字段,需要根据实际情况进行定义。如按业务需求定义为not null, 那么楼主的问题就应该解决数据的问题,楼上各位提出了多个解决方式:新版本推荐merge,性能更佳...显示全部
表结构定义与实际数据不一致问题。
设计表结构式not null不是适合所有表的字段,需要根据实际情况进行定义。

如按业务需求定义为not null, 那么楼主的问题就应该解决数据的问题,楼上各位提出了多个解决方式:
新版本推荐merge,性能更佳 收起
软件开发 · 2011-09-23
浏览975
忧愁绽放 忧愁绽放 系统工程师 zznode
字段是not null,要么改下约束,要么看下你的数据情况,或者用merge显示全部
字段是not null,要么改下约束,要么看下你的数据情况,或者用merge 收起
电信设备制造商 · 2011-09-06
浏览905
wxmlxj wxmlxj 项目经理 啊啊哦哦
现在问题解决了吗?load 语句后面再跟着写一个别的sql语句,应该会报错的。显示全部
现在问题解决了吗?
load 语句后面再跟着写一个别的sql语句,应该会报错的。 收起
互联网服务 · 2011-09-06
浏览924
jillme jillme 课题专家组 CIO 某大型银行
update prpjfcombus set bankcode=(select a.bankcode from shh a  where a.BusinessCode=prpjfcombus.BusinessCodeand( a.bankcode is not null or a.bankcode '')    )whereBusinessCodein(select BusinessCode from  shh)显示全部
update prpjfcombus set bankcode=
(select a.bankcode from shh a
  where a.BusinessCode=prpjfcombus.BusinessCode
and( a.bankcode is not null or a.bankcode <>'')
    )
where
BusinessCode
in(
select BusinessCode from  shh) 收起
互联网服务 · 2011-08-31
浏览949
孔令俊 孔令俊 软件开发工程师 建行
informix目前有merge的功能了,可以考虑使用显示全部
informix目前有merge的功能了,可以考虑使用 收起
互联网服务 · 2011-08-30
浏览950
wisefox wisefox CIO ccc
加where 条件where exists(select 1  from shh b where b.BusinessCode=prpjfcombus.BusinessCode)显示全部
加where 条件

where exists
(select 1  from shh b where b.BusinessCode=prpjfcombus.BusinessCode) 收起
互联网服务 · 2011-08-25
浏览983
ztj111 ztj111 其他 picc
怎样才能避免这个问题呢显示全部
怎样才能避免这个问题呢 收起
政府机关 · 2011-08-25
浏览953
weiruan85 weiruan85 数据库管理员 ibm
update prpjfcombus set bankcode=(select a.bankcode from shh a  where a.BusinessCode=prpjfcombus.BusinessCode    );很明显是你的sql写的有问题,连where 条件都没有,这样会全部更新,找不到对应记录的肯定update成null了...显示全部
update prpjfcombus set bankcode=
(select a.bankcode from shh a
  where a.BusinessCode=prpjfcombus.BusinessCode
    );


很明显是你的sql写的有问题,连where 条件都没有,这样会全部更新,找不到对应记录的肯定update成null了 收起
政府机关 · 2011-08-25
浏览976
ztj111 ztj111 其他 picc
prpjfcombus表的结构prpjfcombus(ComCode        CHAR( NOT NULL,         BusinessCode        CHAR(15) NOT NULL,         BusinessName&...显示全部
prpjfcombus表的结构
prpjfcombus
(
ComCode        CHAR( NOT NULL,         
BusinessCode        CHAR(15) NOT NULL,         
BusinessName        CHAR(40) NOT NULL,         
BankCode        CHAR(12) NOT NULL,        
Flag        CHAR(10),         
); 收起
政府机关 · 2011-08-25
浏览996

提问者

ztj111
其他 picc
评论10

相关问题

问题状态

  • 发布时间:2011-08-25
  • 关注会员:0 人
  • 问题浏览:6003
  • 最近回答:2011-09-28
  • X社区推广