В таблице 2 поля: date - оно же primary key без auto increment num - цифра
Можно ли одним запросом сделать:
Если date=2016-07-06 в таблице существует, то сделать num=num+1 если такой даты не существует то вставить запись date=2016-07-06 со значением num=1
Виталий: в чём недостаток? я теряю в производительности? Ну это тогда проблема innodb вероятно что он не может ориентироваться по дате как первичному ключу ))) Зато мне глаз не засоряют лишние столбцы...
Виталий: "В Innodb не может не быть первичного ключа. Если вы не укажите его, Mysql сделает это за вас. Сначала Mysql попытается взять первый уникальный индекс (UNIQUE INDEX). Если не получится — создаст скрытую колонку (из 6ти байт) и назначит ее первичным ключом." Т.е. вы считаете что у него получится создать индекс из даты не смотря на то что он уникальный и он создаст свой?
Виталий: Нашёл в чем недостаток моего варианта "Первичным ключом должна быть самая маленькая по размеру колонка. Это сэкономит кучу места, т.к. значение первичного ключа сохраняется в каждом индексе."
Дмитрий: я тоже это не нашел. Но у себя я в InnoDB которая создавалась по умолчанию выполнить insert or update не смог. А вот когда переделал InnoDB в MyISAM - всё заработало. Если у вас заработает в InnoDB - отпишитесь пожалуйста. Может это всё же у меня проблемы с какой-то конкретной версией.