2016-06-20 8 views
1

Я работал над программой для генерации счетов-фактур вендоров, где вызывается программный код библиотеки для вставки данных в таблицу t_job, которая хранит записи для некоторых важных заданий, таких как создание заказа на поставку и т. Д.Невозможно вставить нуль в столбец - Informix

Проблема заключается в том, что этот код библиотеки для вставки данных в таблицу t_job вызывается из множества различных программ 4ge и от разных пользователей, но у меня возникает особая проблема для вновь созданного пользователя.

Я получаю сообщение об ошибке «Невозможно вставить нуль в столбец (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.

Я посмотрел в таблицу sysusers в базе данных sysuser и нашел 2 строки там, как показано ниже:

username informix 
usertype D 
priority 9 
password 
defrole 

username public 
usertype C 
priority 5 
password 
defrole 

Любая помощь в этой связи высоко ценится.

ответ

0

Учитывая, что sysusers таблица имеет только две строки, то SELECT заявление будет только установить переменную _user когда informix запускает код.

Рекомендуемое исправление:

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

Название USER и TODAY встроены в нулевом аргументе функции (ключевые слова), которые возвращают текущее имя пользователя и текущую дату. С изменением _user на USER вам больше не нужен фиктивный SELECT. Вам может и не понадобиться переменная _user. Я также с интересом смотрю на переменную _time, хотя вам придется больше работать, чтобы ее заменить (CURRENT HOUR TO MINUTE должен выполнить эту работу).

+0

Спасибо за ответ. –

+0

Моя проблема сохраняется, потому что я хотел понять, почему код вставки бросает ошибку только в случае нового пользователя, в то время как тот же код работает для многих других пользователей. Также я бы отказался от изменения библиотечная программа, которая отлично работает –

+0

Я не вижу достаточно кода, чтобы узнать, почему он работает для других пользователей. Это не имеет большого смысла. Причина для исправления кода заключается в том, что он работает некорректно все время, и он делает ненужную работу. –

 Смежные вопросы

  • Нет связанных вопросов^_^