更新多个mysql表中的用户标识列

时间:2010-12-10 09:31:52

标签: mysql multiple-tables

我意识到这个问题似乎已经被问过并得到了回答,但我仍然不确定这是否可行。

我正在尝试更新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 :(得分:0)

UPDATE的语法是

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

您似乎一次只能更新一个表。

答案 1 :(得分:0)

更新语句与select非常相似,所以你应该能够做到这一点!

但是,我建议使用触发器。

答案 2 :(得分:0)

OR更改为AND否则您将遇到问题。 OR将更新许多其他用户ID

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'

答案 3 :(得分:0)

Innodb存储引擎支持外键级联更新 - http://dev.mysql.com/doc/refman/5.1/en/innodb-foreign-key-constraints.html

你应该考虑这个

<强>替代地

将单个查询分解为九个查询(每个表格各一个)以最大限度地减少犯错的潜在风险(安全而非智能游戏)