маленький попрос по мускулю

dex
На сайте с 14.04.2006
Offline
231
dex
437

всех приветствую:)

вот озадачился - надо:

создать строку со значениями pid и data если нету такой (с такими же pid и data)

а если есть - инкрименировать поле count в этой строке

первое на ум

приходит проверить 1 запросом наличие строки с такими же значениями pid и data

залочить таблицу, инкриминировать count

как-то коряво

ON DUPLICATE - вроде невтему...

заранее спасибо за совет:beer:

губит людей вода (подпись не продаю, в долг не даю)
DeveloperRu
На сайте с 27.02.2009
Offline
72
#1
dex:
всех приветствую:)

вот озадачился - надо:
создать строку со значениями pid и data если нету такой (с такими же pid и data)
а если есть - инкрименировать поле count в этой строке

первое на ум
приходит проверить 1 запросом наличие строки с такими же значениями pid и data
залочить таблицу, инкриминировать count

как-то коряво

ON DUPLICATE - вроде невтему...

заранее спасибо за совет🍻

ON DUPLICATE как раз в тему - работает для составных ключей - сделайте второй ключ в вашей таблице, состоящий из двух полей и являющийся уникальным, и используйте ON DUPLICATE

Ответы на вопросы (http://telenok.com)
dex
На сайте с 14.04.2006
Offline
231
dex
#2
DeveloperRu:
ON DUPLICATE как раз в тему - работает для составных ключей - сделайте второй ключ в вашей таблице, состоящий из двух полей и являющийся уникальным, и используйте ON DUPLICATE

эмм... может я не врубулся...

задача - каждый день каждому pid счетчик сделать

если я pid и data сделаю уникальными - не смогу иметь для pid=1 строки для сегодня и завтра

и строки сегодня для pid=1 и pid=2

в этом смысле не в тему:)

dex добавил 26.06.2009 в 13:02

DeveloperRu:
второй ключ в вашей таблице, состоящий из двух полей и являющийся уникальным

эммм... понял кажись - ключь не pid и не data, а именно состоящий из двух полей

да?

а как это делается?

dex добавил 26.06.2009 в 13:04

PRIMARY KEY (pid, data)

вот это?

а можно не primary?

DeveloperRu
На сайте с 27.02.2009
Offline
72
#3

можно не первичный ключ

смотрите в доке на мускул.ком "key unique"

dex
На сайте с 14.04.2006
Offline
231
dex
#4

ага, вроде вонял

спасибо - щас погляжу как работает

DeveloperRu
На сайте с 27.02.2009
Offline
72
#5

ON DUPLICATE работате так - если у вас уже есть данные для данного уникального ключа, то вставка новой записи с такими же значениями этих полей вызовет ошибку

поэтому после попытки вставки (неудачной) ON DUPLICATE делает апдейт этой строки с теми значениями, которые указали после ON DUPLICATE UPDATE

dex
На сайте с 14.04.2006
Offline
231
dex
#6
DeveloperRu:
ON DUPLICATE работате так - если у вас уже есть данные для данного уникального ключа, то вставка новой записи с такими же значениями этих полей вызовет ошибку

поэтому после попытки вставки (неудачной) ON DUPLICATE делает апдейт этой строки с теми значениями, которые указали после ON DUPLICATE UPDATE

да все работает

просто не допер, что неуникален может быть ключь из 2-х полей

спасибо:)

Авторизуйтесь или зарегистрируйтесь, чтобы оставить комментарий