Вставка или обновление по условию, довольно таки сложно

MySQL sql база данных

Есть 4 ячейки, нужно вставить значение в пустую, т.е. если ячейка `A` пустая, то вставляй в нее, допустим 10, далее, если ячейка `A` занята, то проверить ячейку `B`, если она пуста, то вставляй в нее 10, иначе, проверяй далее ячейку `C`, если она пуста, вставляй в нее 10, и так же само с ячейкой `D`, если все заняты, то вообще вставляй в новую запись в ячейку `A` значение 10. Мой запрос выглядит так:


mysql> UPDATE `mytable` SET `A`=10,`B`=10,`C`=10,`D`=10 WHERE `A` IS NULL OR `B` IS NULL OR `C` IS NULL OR `D` IS NULL LIMIT 1;
Query OK, 1 row affected (0.06 sec)
Rows matched: 1 Changed: 1 Warnings: 0


увы, это вставляет во все ячейки значение 10. Может возможно как-то прерывать запрос когда в какое-либо одно и только одно поле было вставлено значение? Конечно очень хотелось бы еще и if affected=0 INSERT INTO `mytable`(`A`) VALUES(10) зачудить, но моим возможностям и познаниям пока это тяжело, надеюсь на помощь сообщества.

Примечание:
> предварительно узнайте какая пустая, потом уже делайте UPDATE
логично.
Ответы:
предварительно узнайте какая пустая, потом уже делайте UPDATE
Можно это реализовать с помощью PHP! Если вы знаете к какой строке таблице обращаетесь!?
В вашей таблице должно быть 1 ячейка для уникального значения (например `id`)!
###############################################################################
<?php
$id=1; // айди строки в таблице с которой производиться операция
$data=mysql_fetch_array(mysql_query("SELECT A, B, C, D FROM mytable WHERE id=$id"));
$break=0;
if(empty($data[A])){
   mysql_query("UPDATE mytable SET A=10 WHERE id=$id");
   $break=1;
}
if(empty($data[B]) and $break==0){
   mysql_query("UPDATE mytable SET B=10 WHERE id=$id");
   $break=1;
}
if(empty($data[C]) and $break==0){
   mysql_query("UPDATE mytable SET C=10 WHERE id=$id");
   $break=1;
}
if(empty($data[D]) and $break==0){
   mysql_query("UPDATE mytable SET D=10 WHERE id=$id");
   $break=1;
}
if($break==1){
   mysql_query("INSERT INTO mytable SET A=10");
}
?>
###############################################################################


13 лет назад

RPI.su - самая большая русскоязычная база вопросов и ответов. Наш проект был реализован как продолжение популярного сервиса otvety.google.ru, который был закрыт и удален 30 апреля 2015 года. Мы решили воскресить полезный сервис Ответы Гугл, чтобы любой человек смог публично узнать ответ на свой вопрос у интернет сообщества.

Все вопросы, добавленные на сайт ответов Google, мы скопировали и сохранили здесь. Имена старых пользователей также отображены в том виде, в котором они существовали ранее. Только нужно заново пройти регистрацию, чтобы иметь возможность задавать вопросы, или отвечать другим.

Чтобы связаться с нами по любому вопросу О САЙТЕ (реклама, сотрудничество, отзыв о сервисе), пишите на почту [email protected]. Только все общие вопросы размещайте на сайте, на них ответ по почте не предоставляется.