“Хороший” способ MySQL вставить строку, если не найденный, или обновляют его, если это найдено

Предположим, вы указали неверный ключ раздела, чтобы данные не могли быть найдены.

Код SP:

function a()
{
    var context = getContext();
    var collection = context.getCollection();
    var collectionLink = collection.getSelfLink();

    var filterQuery = 'SELECT  * FROM c';

    collection.queryDocuments(collectionLink, filterQuery, { pageSize: -1 },
        function (err, documents) {
            if (err) throw err;
            if (!documents || !documents.length) {
                var response = getContext().getResponse();
                response.setBody('No Records found');
            }else {
                var response = getContext().getResponse();
                response.setBody(documents);
            }
        });
}

Пример данных:

enter image description here

Укажите ключ разделения и выполните: ]

enter image description here

16
задан Andrew Barnett 18 April 2009 в 15:12
поделиться

6 ответов

Вы можете использовать " REPLACE INTO " или " INSERT… ON DUPLICATE KEY UPDATE ".

17
ответ дан 30 November 2019 в 21:11
поделиться

Это называется UPSERT ( UP дата или в SERT ). По этому поводу есть ряд ТАКИХ вопросов, которые вы можете найти. См. Википедию

РЕДАКТИРОВАТЬ: MySQL 4.1+ поддерживает INSATE ( INS ert или upd ATE ), что должно дать вам то же самое, если вы есть первичный ключ. Руководство по MySQL

3
ответ дан 30 November 2019 в 21:11
поделиться

Я думаю, что это легче переключить. Попробуйте вставить, а затем обновить.

В MySQL есть пункт «ON DUPLICATE KEY»

INSERT INTO cars (fields) ЗНАЧЕНИЯ (значения) ON DUPLICATE KEY UPDATE ...

Это, конечно, требует от вас наличия правильная настройка уникальных ключей.

1
ответ дан 30 November 2019 в 21:11
поделиться

пример того, как я использовал ON DUPLICATE KEY UPDATE: INSERT INTO реестр (имя, значение) ЗНАЧЕНИЯ ('". $ Key."', '". $ Val."') ON DUPLICATE KEY UPDATE value = '". $ Val."' "

0
ответ дан 30 November 2019 в 21:11
поделиться

В Oracle у вас есть Слияние .

Нет понятия о MySql, но термин может дать вам что-то еще для поиска.

0
ответ дан 30 November 2019 в 21:11
поделиться

Из мой другой ответ на переполнение стека :

Если вы хотите сделать это одним оператором, я бы рекомендовал использовать INSERT ... ON Синтаксис DUPLICATE KEY UPDATE следующий:

INSERT INTO table (id, someothervalue) VALUES (1, 'hi mom')
  ON DUPLICATE KEY UPDATE someothervalue = 'hi mom';

Начальный оператор INSERT будет выполняться, если не существует записи с указанным значением ключа (первичным или уникальным). Если запись уже существует, выполняется следующий оператор UPDATE ( someothervalue = 3 ).

Это поддерживается во всех версиях MySQL. Для получения дополнительной информации см. Страницу Справочного руководства MySQL для INSERT ... ON DUPLICATE KEY UPDATE

7
ответ дан 30 November 2019 в 21:11
поделиться
Другие вопросы по тегам:

Похожие вопросы: