Обновление столбца идентификатора пользователя в нескольких таблицах mysql - PullRequest
1 голос
/ 10 декабря 2010

Я понимаю, что на этот вопрос, похоже, уже задавали и отвечали раньше, но я все еще не уверен, возможно ли это.

Я пытаюсь обновить 9 таблиц, чтобы отразить изменение в значении user_id, примерно так:

UPDATE table1, table2, table3, table4 SET
table1.id='12', table2.id='12', table3.id='12', table4.id='12'
WHERE table1.id='15' OR table2.id='15' OR table3.id='15' OR table4.id='15'

Возможно ли это?Я что-то упустил действительно очевидное?

Ответы [ 4 ]

0 голосов
/ 10 декабря 2010

Механизм хранения Innodb обеспечивает поддержку каскадного обновления внешнего ключа - http://dev.mysql.com/doc/refman/5.1/en/innodb-foreign-key-constraints.html

Вам следует учесть это

В качестве альтернативы

Разбить один запросдо девяти запросов (каждый для каждой таблицы), чтобы минимизировать потенциальный риск при совершении ошибки (играйте безопасно, а не играйте умно)

0 голосов
/ 10 декабря 2010

update update очень похож на select, так что вы сможете это сделать!

Однако я рекомендую использовать триггеры.

0 голосов
/ 10 декабря 2010

изменить OR на AND В противном случае вы будете в проблеме. OR обновит многие другие идентификаторы пользователей

UPDATE table1, table2, table3, table4 SET
table1.id='12', table2.id='12', table3.id='12', table4.id='12'
WHERE table1.id='15' AND table2.id='15' AND table3.id='15' AND table4.id='15'
0 голосов
/ 10 декабря 2010

Синтаксис UPDATE:

UPDATE table_name
SET column1=value, column2=value2,...
WHERE some_column=some_value

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

...