gpt4 book ai didi

mysql - 如何在整个 MySQL 脚本中假设一个表前缀?

转载 作者:行者123 更新时间:2023-11-29 02:29:43 24 4
gpt4 key购买 nike

我有一个脚本要在我的数据库中运行。但问题是这个脚本假定表没有前缀,所有数据库都有一个前缀(我们称之为 prefix_)。

有没有MySQL尝试运行的命令或方法

INSERT INTO prefix_mytable ...

代替

INSERT INTO mytable...

对于脚本中的所有 sql 查询(UPDATE、INSERT 和 DELETE)?

最佳答案

MySQL 无法按照您描述的方式自动为表添加前缀。 @MichaelBerkowski 是正确的。

我能建议的最好的办法是创建第二个具有可更新 View 的数据库,使用不带前缀的名称作为带前缀的表名的前端。

这是一个例子:

mysql> CREATE DATABASE test;
mysql> CREATE TABLE test.prefix_mytable (id INT PRIMARY KEY, x VARCHAR(20));
mysql> CREATE DATABASE test2;
mysql> CREATE VIEW test2.mytable AS SELECT * FROM test.prefix_mytable;

现在您可以使用无前缀的名称插入:

mysql> INSERT INTO test2.mytable (id, x) VALUES (123, 'abc');

并验证数据是否已插入到您的原始表中:

mysql> SELECT * FROM test.prefix_mytable;

完成后,您可以针对数据库 test2 运行 SQL 脚本,所有的 INSERT 应该都能正确地到达您的原始表。

如果您有很多表需要为其创建 View ,您可以自动创建 CREATE VIEW 语句:

mysql> SELECT CONCAT('CREATE VIEW test2.', REPLACE(TABLE_NAME, 'prefix_', ''), 
' AS SELECT * FROM test.', TABLE_NAME, ';') AS _sql
FROM INFORMATION_SCHEMA.TABLES
WHERE TABLE_SCHEMA='test' AND TABLE_NAME LIKE 'prefix\_%';

关于mysql - 如何在整个 MySQL 脚本中假设一个表前缀?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15102436/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com