|
UPDATE FROM SELECT ОШИБКА: нулевое значение в столбце
|
|||
---|---|---|---|
#18+
Добрый день. Есть таблица, в которой нужно обновить по некому условию (WHERE d._fld16100rref <> E'\\x88b1001e672dd19011e53b498262f721'::bytea) три поля, причем одно поле вычисляется на основе данных других таблиц У меня получился вот такой UPDATE: Код: sql 1. 2. 3. 4. 5. 6. 7.
который выполняет то что нужно, но если убрать COALESCE в операторе SET SET (_fld16089, _fld16100rref, _fld16086rref) = (dd.comment, dd.ref_org, dd.ref_kkm) то получаю ошибку: ОШИБКА: нулевое значение в столбце "_fld16089" нарушает ограничение NOT NULL ПОДРОБНОСТИ: Ошибочная строка содержит (\xb902001a64a305e011e287ad362c762d, 1, f, 2013-03-08 15:13:55, 2013-01-01 00:00:00, И20-0006576, f, \xb9ba2928913eb98745 Не совсем ясно откуда может взяться значение NULL - ведь в подзапросе его нет и обновляться должны только те данные, которые возвращает SELECT. ... |
|||
:
Нравится:
Не нравится:
|
|||
16.01.2018, 10:28 |
|
UPDATE FROM SELECT ОШИБКА: нулевое значение в столбце
|
|||
---|---|---|---|
#18+
pmb17Добрый день. Есть таблица, в которой нужно обновить по некому условию (WHERE d._fld16100rref <> E'\\x88b1001e672dd19011e53b498262f721'::bytea) три поля, причем одно поле вычисляется на основе данных других таблиц У меня получился вот такой UPDATE: Код: sql 1. 2. 3. 4. 5. 6. 7.
который выполняет то что нужно, но если убрать COALESCE в операторе SET SET (_fld16089, _fld16100rref, _fld16086rref) = (dd.comment, dd.ref_org, dd.ref_kkm) то получаю ошибку: ОШИБКА: нулевое значение в столбце "_fld16089" нарушает ограничение NOT NULL ПОДРОБНОСТИ: Ошибочная строка содержит (\xb902001a64a305e011e287ad362c762d, 1, f, 2013-03-08 15:13:55, 2013-01-01 00:00:00, И20-0006576, f, \xb9ba2928913eb98745 Не совсем ясно откуда может взяться значение NULL - ведь в подзапросе его нет и обновляться должны только те данные, которые возвращает SELECT. А почему вы считаете что в результатах запроса ELECT d._idrref as _idrref, r1._fld2318::mvarchar || ' ' || r2._fld26273::mvarchar AS comment, E'\\x00000000000000000000000000000000'::bytea AS ref_org, E'\\x00000000000000000000000000000000'::bytea AS ref_kkm FROM _document585 as d left join _reference137 as r1 on d._fld16100rref = r1._idrref left join _reference92 as r2 on d._fld16086rref = r2._idrref WHERE d._fld16100rref <> E'\\x88b1001e672dd19011e53b498262f721'::bytea значение r1._fld2318::mvarchar || ' ' || r2._fld26273::mvarchar AS comment - не может быть NULL? Выполните запрос и проверьте глазами например? -- Проект с базой но без DBA все равно что автопарк без автомеханика. Все ездит до первой поломки. dataegret.ru ... |
|||
:
Нравится:
Не нравится:
|
|||
16.01.2018, 12:56 |
|
UPDATE FROM SELECT ОШИБКА: нулевое значение в столбце
|
|||
---|---|---|---|
#18+
Maxim Boguk, спасибо, действительно проблема была в том что некоторые записи имеют значение NULL ... |
|||
:
Нравится:
Не нравится:
|
|||
16.01.2018, 14:13 |
|
UPDATE FROM SELECT ОШИБКА: нулевое значение в столбце
|
|||
---|---|---|---|
#18+
Хотя поля _fld2318 и _fld26273 имеют модификатор NOT NULL ... |
|||
:
Нравится:
Не нравится:
|
|||
16.01.2018, 14:15 |
|
UPDATE FROM SELECT ОШИБКА: нулевое значение в столбце
|
|||
---|---|---|---|
#18+
pmb17Хотя поля _fld2318 и _fld26273 имеют модификатор NOT NULL Так left join же, нет связанной записи - и получили Null. ... |
|||
:
Нравится:
Не нравится:
|
|||
16.01.2018, 14:43 |
|
|
start [/forum/topic.php?fid=53&msg=39585196&tid=1996001]: |
0ms |
get settings: |
11ms |
get forum list: |
15ms |
check forum access: |
3ms |
check topic access: |
3ms |
track hit: |
225ms |
get topic data: |
12ms |
get forum data: |
3ms |
get page messages: |
49ms |
get tp. blocked users: |
1ms |
others: | 294ms |
total: | 616ms |
0 / 0 |