Это правильный подход к обновлению - PullRequest
1 голос
/ 19 ноября 2010

У меня была длинная форма, включающая несколько комбинированных полей и текстовых полей.

Я использую эту форму для регистрации, также я использую такую ​​же форму для обновления.

  1. Я завершил процесс регистрации, используя INSERT запрос.
  2. Для обновлений у меня была одна идея. Вместо использования UPDATE запроса я должен сначала удалить (DELETE) запись, а затем снова вставить ее в базу данных , поскольку, поскольку я уже выполнил процесс вставки для регистрации, я могу повторно использовать код.

Что-то не так с этим подходом?

Ответы [ 2 ]

2 голосов
/ 19 ноября 2010

Существуют сценарии (особенно в массовых заданиях по перемещению данных и т. Д.), В которых выполнение чего-либо подобного может иметь смысл.

Но в вашем сценарии я действительно не вижу причин, по которым вам следует делать то, что вы предлагаете.

Я не вижу никакой выгоды от вашего подхода, кроме как сэкономить вам лишь незначительное количество времени на разработку. С другой стороны, ваше приложение будет выполнять 2 оператора SQL (DELETE + INSERT) вместо 1 UPDATE каждый раз, когда ваши пользовательские данные обновляются. В зависимости от того, как работает ваше приложение, вам также понадобится другая логика для отслеживания изменений в профилях пользователей, поскольку таких вещей, как dtCreated и т. Д. Будет недостаточно.

Я бы просто использовал вместо этого простой оператор UPDATE.

1 голос
/ 19 ноября 2010

Вы можете использовать команду REPLACE INTO, которая использует тот же синтаксис.За экраном он будет выполнять DELETE, а затем INSERT.Если вы используете InnoDB таблицы и настроили отношения, это может быть очень опасно, если вы подумаете, что REPLACE INTO будет работать как UPDATE.Результат, набор удаленных строк из-за каскадных правил.

Вы рассматриваете возможность использования DELETE с последующим INSERT для обновлений, потому что у вас есть готовый insert-sql.Ну, вы могли бы использовать UPDATE как синтаксис для вставок.Таким образом, это просто вопрос использования INSERT / UPDATE в соответствии с вашей задачей.

Поэтому вместо:

INSERT INTO products (name) VALUES ('iPhone');

.. вы должны использовать:

INSERT INTO products SET name='iPhone';

Что выглядит так же, как обновление:

UPDATE products SET name='iPhone' WHERE id=1;

Почти то же самое.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...