MySQL запрос на обновление двух таблиц - PullRequest
0 голосов
/ 08 марта 2012

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

$query = "UPDATE tblproducts, tblsideimages 
          SET tblproducts.prodCode='oj', tblsideimages.prodCode='oj' 
          WHERE tblproducts.prodCode='aj' 
              AND tblsideimages.prodCode='aj'";

Он работает, если в tblsideimages есть содержимое, такое как этот, но не работает, если tblsideimagesне имеет содержимого.

Проблема в том, что мне нужно настроить его соответствующим образом, потому что не всегда будет содержимое в tblsideimages.Иногда пользователь может добавлять данные, которые вставляются только в tblproducts.Как я могу сделать так, чтобы, если в tblsideimages нет содержимого, оно все равно будет работать для tblproducts, и если оба содержимого, tblsideimages и tblproducts, будут обновлены.Спасибо!

Ответы [ 2 ]

2 голосов
/ 08 марта 2012

Нет способа (и реальной причины) сделать всю работу за один запрос. Так что просто разбейте его на:

UPDATE tblproducts SET prodCode='oj' WHERE prodCode='aj' 

UPDATE tblsideimages SET prodCode='oj' WHERE prodCode='aj'

Меньше запросов не означает «более производительный», поэтому никогда не следуйте идее объединить все в один запрос.

0 голосов
/ 08 марта 2012

Вы можете сделать это с помощью хранимой процедуры - напишите хранимую процедуру с операторами обновления в транзакции.

Используя откаты, вы можете убедиться, что они обрабатываются как одна единица работы, т. Е. Либо все они выполняются, либо ни одна из них не выполняется, чтобы обеспечить соответствие данных.

или выполнить несколько запросов, например

     $query="UPDATE tblproducts
             SET tblproducts.prodCode='oj'
             WHERE tblproducts.prodCode='aj';
             UPDATE tblsideimages 
             SET tblsideimages.prodCode='oj'
             WHERE tblsideimages.prodCode='aj'";
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...