2016-08-06 2 views
1

У меня есть база данных, содержащая эту таблицу: TableОбновление таблицы базы данных

Таблица состоит из 3 столбцов: -id: идентифицировать каждую строку таблицы -Address: сохранить все адреса -default: булева столбца, где 1 определяет адрес, используемый по умолчанию пользователем

на изображении выше адреса по умолчанию используемого address1

Я хотел бы добавить четвертый адрес и установить этот четвертый адрес по умолчанию. Поэтому я написал следующие строки:

-UPDATE address SET default=false 
-INSERT INTO addresses SET address = `address4`, default=true 

То, что я хотел бы знать, что, есть ли способ объединить 2 линии для повышения производительности? Или использовать 2 строки в порядке?

Заранее спасибо за предоставление вашей помощи

+1

Две линии в порядке. Обновление изменяет и существующую запись. Вставка создает новый. Разные вещи. – Kosch

ответ

3

Вы не можете объединить их в один оператор. Однако вы можете объединить их в одну транзакцию, чтобы они вступили в силу одновременно.

Вы делаете это с start transaction, что задокументировано here.

Кроме того, я хотел бы предложить вам обратные операции:

INSERT INTO addresses 
    SET address = $address4, 
     default = false; 

UPDATE address 
    SET default = (case when address = $address4" then true else false end); 

Это выглядит более сложным. Но если вы не используете транзакции, убедитесь, что адрес по умолчанию всегда задан для других процессов, запрашивающих таблицу (при условии, что механизм хранения имеет некоторые возможности ACID).

+0

Благодарим за предоставление вашей помощи – Prince

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