2015-08-15 4 views
0

Мне было интересно, можно ли обновить несколько таблиц одним запросом с помощью mysql. Я пробовал использовать INNER JOIN, но я считаю, что я ушел, потому что я продолжаю получать синтаксическую ошибку после синтаксической ошибки. Ниже мой текущий синтаксис SQL:Как обновить несколько таблиц с 1 запросом в MYSQL

UPDATE blog_posts a INNER JOIN search b ON a.postTitle = b.title, a.postSlug = b.link, a.postDesc = b.description, a.postCont SET a.:postTitle = b.:postTitle, a.:postSlug = b.:postSlug, a.:postDesc = b.postDesc, a.:postCont WHERE postID = :postID AND title = :postTitle 

Вот некоторые фона: У меня есть две таблицы в той же базе данных. Один из них называется blog_posts и другой поиск. В моей таблице blog_posts содержится контент для сообщений в блоге на моем веб-сайте. Недавно я добавил поисковую систему на свой сайт и добавил поиск в таблице, чтобы сохранить все данные моих страниц. Моя идея состоит в том, что каждый раз, когда кто-то обновляет сообщение в блоге, информация в таблице поиска будет обновляться также с той же информацией. Я знаю, что мой синтаксис выключен, но я был бы признателен, если бы кто-то помог мне получить его тактично, чтобы он сделал то, что я описал выше.

Кроме того, мои таблицы имеют разные имена столбцов. blog_posts имеет следующее: сообщения дан, postTitle, postSlug (название преобразуются в ссылки), и postDesc поиск имеет следующий: идентификатор, название, описание, ключевые слова и ссылки

Я пытался сделать мой сценарий так что он обновляет строку таблицы поиска, где заголовок postTitle =. Может быть, есть лучший способ сделать это? В любом случае, любая помощь будет оценена по достоинству.

+0

Нет, вы не можете обновить несколько таблиц с MySQL соединений. Однако вы можете использовать транзакции, чтобы автоматически обновлять другие таблицы, чтобы синхронизировать все. Лично я всегда занимался этим прагматично. – terribleuser

+0

О, я прочитал, что объединения будут обновлять несколько таблиц. Однако, спасибо. Любые сайты, которые могут привести меня в правильном направлении? @terribleuser –

+0

вы определенно можете это сделать. – ethorn10

ответ

0

Вы можете сделать это без явного INNER JOIN синтаксиса, но вместо того, чтобы сделать это в вашей статье WHERE:

UPDATE blog_posts a, search b 
SET a.postTitle = :postTitle 
    , b.title = :postTitle 
    , a.postSlug = :postSlug 
    , b.link = :postSlug 
    , a.postDesc = :postDesc 
    , b.description = :postDesc 
-- this continues for any tables/values you want to set 
WHERE a.postID = :postID 
    AND -- whatever else joins your two tables together or other unique values 
Смежные вопросы