Структура моей таблицы
таблица: отметки
Моя цель: я хочу вставить или обновить несколько записей с условием
в настоящее время я проверяю этот запрос
1-й шаг
SELECT * FROM `marks` WHERE `student` =115 AND `param` =1
2-й шаг
if
records found by matching above criteria i just update record by my new values
else
insert new record into my table
Он будет работать нормально. но я хочу сократить код и оптимизировать его в один запрос. это возможно или нет? Я нашел это в документации MySQL INSERT... ON DUPLICATE KEY UPDATE. если это решение. как я могу достичь по запросу?
Примечание. Я использую фреймворк Yii. предложение от Yii также приветствуется
Отредактировано: этот запрос не обновляет строки . но выход из вставки работает правильно
INSERT INTO marks(`student`,`param,mark`,`created`,`lastmodified`,`status`)
VALUES
(11,30,10,'00-00-00 00:00:00','00-00-00 00:00:00','U')
ON DUPLICATE KEY UPDATE `mark`=VALUES(`mark`)
ON DUPLICATE KEY UPDATE SET mark=VALUES(mark)
- person Wrikken   schedule 21.04.2014ALTER TABLE marks ADD UNIQUE (student, param);
, а затемINSERT INTO marks (student, param, mark, created) VALUES (11,20,10,NOW()) ON DUPLICATE KEY UPDATE SET mark=VALUES(mark);
должно работать. - person Wrikken   schedule 22.04.2014