| Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате |
| Форум программистов > PHP: Базы Данных > использование UNIQUE |
| Автор: GrafF812 24.3.2010, 15:21 |
| Здравствуйте, в моей таблицы для одного из полей используется параметр Unique, скажите пожалуйста можно ли после запроса INSERT узнать id той строки, в которой уже имеются уникальные для нее данные ? |
| Автор: bars80080 24.3.2010, 15:22 | ||
можно
|
| Автор: azesmcar 24.3.2010, 15:29 | ||
| bars80080 По моему ты не так понял вопрос, если я правильно понял, он хочет после exception-а узнать id строки. GrafF812 Если это для UPDATE-а то в mysql есть такая штука
WHERE для UPDATE-а не нужен, он автоматически будет использовать уникальный ключ и повторившееся значение. |
| Автор: bars80080 24.3.2010, 15:34 |
| да, не втыкнул сразу |
| Автор: GrafF812 24.3.2010, 15:49 | ||||
azesmcar, Вот смотрите что мне нужно, допустим есть таблица Fruits:
Все поля таблицы объявлены unique. Допустим я хочу довать в таблицу следующий фрукт:
этот запрос не вставит его в таблицу, т.к "Груша" уже есть в строке с id=2, вот мне как раз и нужно узнаь этот id той строки. |
| Автор: Fortop 24.3.2010, 16:03 | ||
перед вставкой сделать
|
| Автор: azesmcar 24.3.2010, 16:04 |
Я понял что вам нужно, я лишь не понял для чего. Если это нужно для обновления (т.е. не сумел добавить запись, обнови существующую) тогда так, как я написал, если для чего-то другого - можно подумать, именно способа для получения ID насколько мне известно нет, разве что сделать parse строки ошибки. |
| Автор: GrafF812 24.3.2010, 16:09 |
| azesmcar, мне это нужно не для UPDATE, мне нужно просто запомнить этот id, чтобы потом использовать, Fortop, спасибо за пример, не хотелось бы вводить еще один запрос, можно ли как-нибуть по другому? p.s вариант с парсом ошибки мне не подойдет. |
| Автор: azesmcar 24.3.2010, 16:11 |
| GrafF812 нет, по другому никак, запускайте запрос select как показал Fortop. |
| Автор: GrafF812 24.3.2010, 16:31 |
| azesmcar, ясно спасибо, подскажите пожалуйста, по поводу парсинга ошибки. Какие данные есть в ошибке которые помогут решит мою проблему? |
| Автор: Fortop 24.3.2010, 16:43 | ||
Это нормальная практика. Если нужен ID то делается SELECT. Если нужна вставка, то делается INSERT Если нужен апдейт, то делается именно UPDATE INSERT'ами же узнавать ID - это и нелогично и неправильно. |
| Автор: GrafF812 24.3.2010, 17:36 |
| Fortop, понял всем спасибо. Буду делать SELECT |
| Автор: GrafF812 24.3.2010, 21:58 | ||||||
Прошу прощения, подскажите как настроить поля (UNIQUE) и сделать запрос на вставку в таблицу если только не совпадают два поля name и price:
Например этот запрос должен добавить новую запись, т.к различаются стоимости груши
а этот не должен вставиться поскольку такое name и price уже есть в таблице
|
| Автор: azesmcar 24.3.2010, 22:03 | ||||||
надо сделать уникальными сочетание этих двух полей
но в таком случае я бы посоветовал вынести определение фруктов в отдельную таблицу. т.е. так
|
| Автор: GrafF812 24.3.2010, 23:12 |
| azesmcar, а в пределах одной таблицы можно так сделать? |
| Автор: Fortop 24.3.2010, 23:49 |
| Один уникальный составной индекс по 2м полям поставить |
| Автор: azesmcar 25.3.2010, 06:39 | ||
я же написал
|
| Автор: GrafF812 25.3.2010, 08:21 |
| azesmcar, спасибо, а можете написать как тогда правильно запрос составить? |
| Автор: azesmcar 25.3.2010, 08:27 | ||
какой запрос? |
| Автор: GrafF812 25.3.2010, 17:39 |
на вставку значений, просто если мы объявляем два поля как UNIQUE то при вставле отсеиваются все запросы в которых есть хотябы есть одно повторение ключа, а мне нужно чтобы отсеивались когда совпадает name+price. |
| Автор: azesmcar 25.3.2010, 18:52 | ||||
не совсем понимаю проблему
|
| Автор: GrafF812 25.3.2010, 21:27 | ||||
azesmcar, спасибо Вам большое за помощь, скажите а в чем разница:
и
|