繁体   English   中英

如何更新数据库中所有表的所有记录?

[英]How to update all records of all tables in database?

我有一张有很多记录的表(可能超过 500 000 或 1 000 000)。 我想在整个数据库的所有表中更新一些具有相同字段名称的常见列。

我知道将单独的查询写入单个表的传统方法,而不是一个查询来更新所有表的所有记录。

在 SQL 中执行此操作的最有效方法是什么,而不使用某些特定于方言的功能,因此它可以在任何地方使用(Oracle、MSSQL、MySQL、Postgres 等)?

附加信息:没有计算字段。 有索引。 使用生成的 SQL 语句逐行更新表。

(这听起来像是规范化“列”的经典案例。)

无论如何... 不。没有单个查询可以在所有表​​中定位该列,然后对每个表执行UPDATE

在 MySQL 中,您可以使用表information_schema.COLUMNS来定位包含特定命名列的所有表。 使用这样的SELECT ,您可以生成(使用CONCAT()等)所需的UPDATE语句。 但是,您需要手动运行它们(通过复制和粘贴)。

当然,您可能会编写一个存储过程将其包装到单个调用中,但这太冒险了。 如果其他一些表具有相同的列名,但不应更新怎么办?

至于跨多个供应商的通用代码——算了! 几乎每个语法都需要进行一些调整。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM