Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > MySQL > INSERT с условнием


Автор: rcdimon 8.3.2006, 09:32
Можно ли вставлять в базу данные с условием, а именно.

В базе данных уже могут находиться точно такие же данные, как те, что подаются на запись с помощью INSERT... нельзя ли автоматически вести проверку наличия этих данных при вставке. А то сейчас мне приходится сначала делать SELECT этих данных и если в ответ тишина- значит этих данных нет и тогда уже INSERT... а вставлять надо оооочень много... хотелось бы как нить автоматически производить проверку срадствами самого MySQL...

Версия MySQL 4.0

Автор: Secandr 8.3.2006, 11:02
rcdimon, сделай соответствующие поля/группы полей уникальными. Тогда при инсерте повторяющихся данным запрос не будет выполнятся!

Автор: rcdimon 8.3.2006, 13:58
Они уникальны только в сумме. Например есть 4 поля.. если во всех четыхер совпадения-тогда не заносить... а если хоть в одном есть отличия- тогда заносить... а уникальность на сколько мне известно ставится на каждое поле независимо

Автор: DeadSoul 8.3.2006, 14:01
Цитата(rcdimon @ 8.3.2006, 13:58 Найти цитируемый пост)
а уникальность на сколько мне известно ставится на каждое поле независимо

Это неверно

Автор: rcdimon 8.3.2006, 18:30
отлично, а как тогда ставить на несколько полей в сумме?

Автор: Secandr 8.3.2006, 18:40
Уникальными могут быть связки из любого числа полей!

Автор: Kesh 8.3.2006, 21:38
rcdimon,
Код

ALTER TABLE `db_name`.`table_name` ADD UNIQUE `index_name`(`field1`, `field2`, `field3`);

Он просто не даст добавить еще один...

Автор: rcdimon 9.3.2006, 13:37
База данных выдает ошибки, у меня из-за этого прога вылетает. а еще не получается контролировать прошла ли вставка или нет smile


Автор: Kesh 9.3.2006, 14:00
rcdimon, ну дык... это уже вопрос контроля выполнения...

Автор: Secandr 9.3.2006, 18:24
Проще научить программу адекватно реагировать на ошибки, чем 500 раз делать селект!

Автор: Ignat 10.3.2006, 09:46
Цитата(Secandr @ 9.3.2006, 18:24 Найти цитируемый пост)
Проще научить программу адекватно реагировать на ошибки,

Не только проще, но и более грамотно.

Автор: Secandr 10.3.2006, 09:56
Ignat, А если так не сделать, при большом количестве запросов на селект+инсерт сервер будет реагировать крайне неадекватно, за что админы будут тебя не любить... smile

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)