ВСТАВЬТЕ В С ДВОЙНЫМ КЛЮЧОМ - PullRequest
0 голосов
/ 17 февраля 2011

У меня небольшая дилемма с моим запросом. Чтобы мой код был оптимальным, я хотел бы сделать как можно меньше логики в PHP и позволить MySQL позаботиться о большинстве вещей.

Итак, вот что у меня есть: У меня есть массив, например, 10 ключей. Каждый ключ удерживает новый массив в некоторых значениях. Каждое значение представляет строку в таблице базы данных.

Допустим, моя таблица базы данных имеет 6 столбцов. первый является основным с автоматическим приращением. Колонки 2, 3 и 4 должны быть уникальными. Колонка 5 - это текстовое представление, которое не должно быть уникальным. Столбец 6 представляет собой INT (1), что либо 0 или 1.

Теперь, когда я вставляю данные в свою таблицу, я использую INSERT INTO mytable (col2, col3, col4, col5, col6) VALUES ('$col2','$col3','$col4','$col5',1) ON DUPLICATE KEY UPDATE col5 = '$col5', col6 = 0; Это прекрасно работает, но не выполняет то, что мне нужно.

Когда я отправляю один и тот же массив еще раз, но для ключа 3, строки col5 я меняю данные на что-то другое, я хочу, чтобы col6 для этого ключа был обновлен до 0; остальное должно остаться 1. Что происходит сейчас, так это то, что каждая строка будет обновляться, даже если она обновляется с использованием точно таких же данных

Итак, мне нужно только обновить col6, если col5 отличается от текущего сохраненного значения. Как я могу это сделать?

1 Ответ

4 голосов
/ 17 февраля 2011

с использованием IF

    INSERT INTO mytable (col2, col3, col4, col5, col6) VALUES
 ('$col2','$col3','$col4','$col5',1)
 ON DUPLICATE KEY UPDATE col5 = '$col5', col6 = IF(col5 != '$col5', 0, col6);
...