无法在列中插入null - Informix

时间:2016-06-20 06:18:54

标签: informix

我正在制定供应商的帐单生成计划,其中调用库程序代码将数据插入表t_job,该表存储一些重要作业的记录,如采购订单生成等。

问题是这个用于将数据插入到表t_job中的库代码可以从许多不同的4ge程序和不同用户调用,但我面临着新创建用户的一个特殊问题。

我收到错误"无法在列中插入null(t_job.username)"对于这个用户。

处理将数据插入t_job的程序有一些代码,我觉得这个问题值得一提。

select username into _user from sysusers where username = user

insert into t_job values(_user,
                         _job_key1,
                         _job_key2,
                         _cd,
                         today,
                         _time)

它让我疯了为什么只有在这种情况下t_jobs的用户名显示为null。

我查看了sysuser数据库中的sysusers表,发现其中有两行,如下所示:

username  informix
usertype  D
priority  9
password
defrole

username  public
usertype  C
priority  5
password
defrole

在这方面的任何帮助都受到高度重视。

1 个答案:

答案 0 :(得分:0)

鉴于sysusers表只有两行,SELECT语句只会在_user运行代码时设置变量informix

推荐修复:

INSERT INTO t_job VALUES(USER, _job_key1, _job_key2, _cd, TODAY, _time)

名称USERTODAY是内置的零参数函数(关键字),它返回当前用户名和当前日期。随着_user更改为USER,您不再需要伪造SELECT。您可能根本不需要_user变量。我也会对_time变量持怀疑态度,但你必须更加努力地替换它(CURRENT HOUR TO MINUTE应该完成这项工作)。