|
|
|
INSERT обход возникновения ошибки при добавлении
|
|||
|---|---|---|---|
|
#18+
Здравствуйте Существует таблица Код: sql 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. Колонка tmp добавлена только для обхода запроса добавления RAND() поля Приблизительные данные Код: sql 1. 2. 3. 4. 5. И запрос добавления строк Код: sql 1. 2. 3. 4. 5. 6. 7. 8. 9. В запросе меняются по тексту Код: sql 1. 2. Запрос работает Но в нем не хватает обработки двух условий Первое Игнорировать вставку если @id:=57 существует Ошибка (Duplicate entry '57' for key 'id')(в принципе решаемо INSERT IGNORE) Второе Когда условие Код: sql 1. возвращает NULL Тогда запрос возвращает (Column 'parent' cannot be null) Как раз в этих вариантах вставлять строку и не надо. Сейчас ошибки просто игнорируются на стороне клиента. Но понадобилось использовать его в multi_query и на нем будет прерываться запрос. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 05.03.2016, 19:25 |
|
||
|
INSERT обход возникновения ошибки при добавлении
|
|||
|---|---|---|---|
|
#18+
переделайте на конструкцию INSERT INTO .... SELECT ... WHERE в секции WHERE укажите исключения ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 05.03.2016, 19:54 |
|
||
|
INSERT обход возникновения ошибки при добавлении
|
|||
|---|---|---|---|
|
#18+
Alex_Ustinovпеределайте на конструкцию INSERT INTO .... SELECT ... WHERE в секции WHERE укажите исключения А что произойдет если SELECT возвратит NULL в те поля в которых их быть не должно. Он также вернет Column 'Х' cannot be null И прервет выполнение сценария. Мне нужно чтобы он просто не вставил строку. и сделал это без ошибок. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 05.03.2016, 20:06 |
|
||
|
INSERT обход возникновения ошибки при добавлении
|
|||
|---|---|---|---|
|
#18+
Как я уже писал INSERT IGNORE избавляет от первой ошибки (Duplicate entry '57' for key 'id') Код: sql 1. 2. 3. 4. 5. 6. 7. 8. 9. Но как проигнорировать вставку когда Код: sql 1. Возвращает NULL Пока в голову проходит только одно Создать техническую строку с определенным id например "0" в таблице и просто подменять текущий id этим техническим. Приблизительно так Код: sql 1. Но хотелось от этого избавиться, так как эта строка может вылезти в каком-то отчете а пересматривать все отчеты не охото ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 05.03.2016, 20:20 |
|
||
|
INSERT обход возникновения ошибки при добавлении
|
|||
|---|---|---|---|
|
#18+
Остановился на таком запросе Код: sql 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. Опрашиваю значение интересующего параметра в генерации поля для уникального ID Код: sql 1. и если оно возвращает NULL выбираю из базы первый ID Код: sql 1. для того чтобы вызвать IGNORE при добавлении строки. После чего генерирую cслучайный номер Код: sql 1. и помещаю его в поле для хранения временного номера. Проверяю его на уникальность Код: sql 1. Если такой присутствует Код: sql 1. Он у меня начинается с 999000000000 Что позволяет RAND() жить своей жизнью в диапазоне от 0 до 899999999999 ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 06.03.2016, 00:09 |
|
||
|
INSERT обход возникновения ошибки при добавлении
|
|||
|---|---|---|---|
|
#18+
Николай Жуков Код: sql 1. IS NULL ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 09.03.2016, 07:09 |
|
||
|
|

start [/forum/topic.php?fid=47&msg=39188664&tid=1832078]: |
0ms |
get settings: |
7ms |
get forum list: |
15ms |
check forum access: |
3ms |
check topic access: |
3ms |
track hit: |
570ms |
get topic data: |
9ms |
get forum data: |
2ms |
get page messages: |
41ms |
get tp. blocked users: |
1ms |
| others: | 248ms |
| total: | 899ms |

| 0 / 0 |
