Модераторы: skyboy, MoLeX, Aliance, ksnk

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> использование UNIQUE 
:(
    Опции темы
GrafF812
Дата 24.3.2010, 15:21 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 205
Регистрация: 3.12.2009

Репутация: нет
Всего: нет



Здравствуйте, в моей таблицы для одного из полей используется параметр Unique,  скажите пожалуйста можно ли после запроса INSERT узнать id той строки, в которой уже имеются уникальные для нее данные ? 
PM MAIL   Вверх
bars80080
Дата 24.3.2010, 15:22 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


прапор творюет
****
Награды: 1



Профиль
Группа: Завсегдатай
Сообщений: 12022
Регистрация: 5.12.2007
Где: Königsberg

Репутация: 9
Всего: 315



можно 
Код

SELECT last_insert_id()

PM MAIL WWW   Вверх
azesmcar
Дата 24.3.2010, 15:29 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


uploading...
****


Профиль
Группа: Участник Клуба
Сообщений: 6291
Регистрация: 12.11.2004
Где: Армения

Репутация: 1
Всего: 211



bars80080

По моему ты не так понял вопрос, если я правильно понял, он хочет после exception-а узнать id строки.

GrafF812
Если это для UPDATE-а то в mysql есть такая штука
Код

INSERT INTO table (...) VALUES (...)
ON DUPLICATE KEY
UPDATE ...

WHERE для UPDATE-а не нужен, он автоматически будет использовать уникальный ключ и повторившееся значение.
PM   Вверх
bars80080
Дата 24.3.2010, 15:34 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


прапор творюет
****
Награды: 1



Профиль
Группа: Завсегдатай
Сообщений: 12022
Регистрация: 5.12.2007
Где: Königsberg

Репутация: 9
Всего: 315



да, не втыкнул сразу
PM MAIL WWW   Вверх
GrafF812
Дата 24.3.2010, 15:49 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 205
Регистрация: 3.12.2009

Репутация: нет
Всего: нет



azesmcar, Вот смотрите что мне нужно, допустим есть таблица Fruits:
Код

id         name          price
1         Яблоко        50
2         Груша          70
3         Банан          85

Все поля таблицы объявлены unique. Допустим я хочу довать в таблицу следующий фрукт:
Код

INSERT INTO Fruits VALUES('0','Груша','100');

этот запрос не вставит его в таблицу, т.к "Груша" уже есть в строке с id=2, вот мне как раз и нужно узнаь этот id той строки.  

Это сообщение отредактировал(а) GrafF812 - 24.3.2010, 15:49
PM MAIL   Вверх
Fortop
Дата 24.3.2010, 16:03 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Завсегдатай
Сообщений: 2200
Регистрация: 13.11.2007
Где: Донецк

Репутация: 3
Всего: 42



перед вставкой сделать
Код

SELECT * FROM `table` WHERE `name`='Груша'



--------------------
Мир это Я.
Живее всех живых.
PM MAIL   Вверх
azesmcar
Дата 24.3.2010, 16:04 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


uploading...
****


Профиль
Группа: Участник Клуба
Сообщений: 6291
Регистрация: 12.11.2004
Где: Армения

Репутация: 1
Всего: 211



Цитата(GrafF812 @  24.3.2010,  15:49 Найти цитируемый пост)
Вот смотрите что мне нужно

Я понял что вам нужно, я лишь не понял для чего. Если это нужно для обновления (т.е. не сумел добавить запись, обнови существующую) тогда так, как я написал, если для чего-то другого - можно подумать, именно способа для получения ID насколько мне известно нет, разве что сделать parse строки ошибки.
PM   Вверх
GrafF812
Дата 24.3.2010, 16:09 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 205
Регистрация: 3.12.2009

Репутация: нет
Всего: нет



azesmcar, мне это нужно не для UPDATE, мне нужно просто запомнить этот id, чтобы потом использовать, 
Fortop, спасибо за пример, не хотелось бы вводить еще один запрос, можно ли как-нибуть по другому? 
p.s вариант с парсом ошибки мне не подойдет.
PM MAIL   Вверх
azesmcar
Дата 24.3.2010, 16:11 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


uploading...
****


Профиль
Группа: Участник Клуба
Сообщений: 6291
Регистрация: 12.11.2004
Где: Армения

Репутация: 1
Всего: 211



GrafF812

нет, по другому никак, запускайте запрос select как показал Fortop.
PM   Вверх
GrafF812
Дата 24.3.2010, 16:31 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 205
Регистрация: 3.12.2009

Репутация: нет
Всего: нет



azesmcar, ясно спасибо, подскажите пожалуйста, по поводу парсинга ошибки. Какие данные есть в ошибке которые помогут решит мою проблему? 
PM MAIL   Вверх
azesmcar
Дата 24.3.2010, 16:38 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


uploading...
****


Профиль
Группа: Участник Клуба
Сообщений: 6291
Регистрация: 12.11.2004
Где: Армения

Репутация: 1
Всего: 211



Цитата(GrafF812 @  24.3.2010,  16:31 Найти цитируемый пост)
azesmcar, ясно спасибо, подскажите пожалуйста, по поводу парсинга ошибки. Какие данные есть в ошибке которые помогут решит мою проблему?  

я бы написал select, parsing ошибки дело неблагородное. А ошибка имеет такой вид
Цитата

Duplicate entry 'Груша' for key 1

хотя если тебе не значение уникального поля нужно а именно ID - тогда и это не подходит.

Это сообщение отредактировал(а) azesmcar - 24.3.2010, 16:39
PM   Вверх
Fortop
Дата 24.3.2010, 16:43 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Завсегдатай
Сообщений: 2200
Регистрация: 13.11.2007
Где: Донецк

Репутация: 3
Всего: 42



Цитата(GrafF812 @  24.3.2010,  15:09 Найти цитируемый пост)
 не хотелось бы вводить еще один запрос, можно ли как-нибуть по другому? 

Это нормальная практика.
Если нужен ID то делается SELECT. 
Если нужна вставка, то делается INSERT
Если нужен апдейт, то делается именно UPDATE

INSERT'ами же узнавать ID  - это и нелогично и неправильно.


--------------------
Мир это Я.
Живее всех живых.
PM MAIL   Вверх
GrafF812
Дата 24.3.2010, 17:36 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 205
Регистрация: 3.12.2009

Репутация: нет
Всего: нет



Fortop, понял всем спасибо. Буду делать SELECT
PM MAIL   Вверх
GrafF812
Дата 24.3.2010, 21:58 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 205
Регистрация: 3.12.2009

Репутация: нет
Всего: нет



Прошу прощения, подскажите как настроить поля (UNIQUE) и сделать запрос на вставку в таблицу если только не совпадают два поля name и price:
Код

id         name          price
1         Яблоко        50
2         Груша          70
3         Банан          85

Например этот запрос должен добавить новую запись, т.к различаются стоимости груши
Код

INSERT INTO Fruits VALUES('0','Груша','100');

а этот не должен вставиться поскольку такое name и price уже есть в таблице
Код

INSERT INTO Fruits VALUES('0','Груша','70');

PM MAIL   Вверх
azesmcar
Дата 24.3.2010, 22:03 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


uploading...
****


Профиль
Группа: Участник Клуба
Сообщений: 6291
Регистрация: 12.11.2004
Где: Армения

Репутация: 1
Всего: 211



надо сделать уникальными сочетание этих двух полей
Код

UNIQUE KEY(name, price)


но в таком случае я бы посоветовал вынести определение фруктов в отдельную таблицу. т.е. так
Цитата

id      name
1       Груша
2       Яблоко


Цитата

id      name_id    price
1       1             70
2       1             100



Это сообщение отредактировал(а) azesmcar - 24.3.2010, 22:05
PM   Вверх
Ответ в темуСоздание новой темы Создание опроса
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | PHP: Базы Данных | Следующая тема »


 




[ Время генерации скрипта: 0.1256 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.