2 / 2 / 3
Регистрация: 21.04.2013
Сообщений: 25
|
||||||
1 | ||||||
Обновить если запись есть; Создать если записи нет25.05.2015, 15:34. Показов 2287. Ответов 5
Метки нет (Все метки)
Ребят подскажите как оптимизировать программу, ибо занимает очень много времени на обработку.Программа делает следующее - ищет на сайте записи, если запись уже есть в базе то эта запись в базе обновляется, если же необнаружено, то создает запись
0
|
25.05.2015, 15:34 | |
Ответы с готовыми решениями:
5
Если строки с такой записью нет - создать, если есть - обновить Если есть запись обновить, иначе вставить в Access Запрос: если записи нет - добавить, если есть - обновить Если есть поле - обновить, если нет - создать |
17790 / 12941 / 3381
Регистрация: 17.09.2011
Сообщений: 21,215
|
|
26.05.2015, 10:40 | 2 |
Эта операция называется UPSERT.
Перво-наперво почитайте мануал к вашей СУБД, может эта команда поддерживается в ней "из коробки". Если да, то ее и используйте. Если нет, то загружайте все записи во временную таблицу, потом делайте полное замыкание на постоянной таблице и двумя командами сначала UPDATE .. WHERE temp.id = production.id, потом INSERT ... LEFT JOIN production ON (temp.id = production.id) WHERE production.id IS NULL
1
|
4217 / 3058 / 583
Регистрация: 21.01.2011
Сообщений: 13,205
|
|
26.05.2015, 12:20 | 3 |
Сообщение было отмечено RaZiL как решение
Решение
1
|
17790 / 12941 / 3381
Регистрация: 17.09.2011
Сообщений: 21,215
|
|
26.05.2015, 12:57 | 4 |
Grossmeister, я не про конкретно команду SQL, а про принцип "вставить или обновить"
Похоже, капсы тут были лишними.
1
|
2 / 2 / 3
Регистрация: 21.04.2013
Сообщений: 25
|
||||||||||||||||
28.05.2015, 04:27 [ТС] | 5 | |||||||||||||||
Спасибо, сделал через Merge, беда в следующем, в запросе есть строка
Добавлено через 4 минуты
0
|
17790 / 12941 / 3381
Регистрация: 17.09.2011
Сообщений: 21,215
|
|
28.05.2015, 11:54 | 6 |
Нет, там написано, что текст и текст несовместимы для сравнения на равенство.
Судя по синтаксису запроса, ваша СУБД SQL Server, в которой оператор сравнения для типа TEXT не определен: 1. Тип TEXT является устаревшим и будет удален в следующих версиях сервера. Используйте вместо него VARCHAR(MAX) 2. Делать сравнение по тексту — вообще сомнительная практика. Почему бы не переписать запрос с использованием первичного ключа? Он там для этого и существует.
1
|
28.05.2015, 11:54 | |
28.05.2015, 11:54 | |
Помогаю со студенческими работами здесь
6
триггеры на проверку если запись есть то пропустить если нет то добавить... Процедура с условием: если такая запись есть, то update, если нет, то insert Одним запросом, если есть таблица то удалить, если нет то создать Обновить запись в MySQL, а если ее нет - добавить Искать еще темы с ответами Или воспользуйтесь поиском по форуму: |