2

データベースで実行するスクリプトがあります。しかし、問題は、このスクリプトがテーブルにプレフィックスがなく、すべてのデータベースにプレフィックスがあることを前提としていることです (それをprefix_と呼びましょう)。

MySQL を実行しようとするコマンドまたは方法はありますか

INSERT INTO prefix_mytable ...

それ以外の

INSERT INTO mytable...

スクリプトでのすべての SQL クエリ (UPDATE、INSERT、および DELETE) に対して?

4

2 に答える 2

2

MySQL には、説明している方法でテーブルに自動的にプレフィックスを付ける方法はありません。@MichaelBerkowskiは正しいです。

私が提案できる最善の方法は、接頭辞付きのテーブル名のフロントエンドとして、接頭辞なしの名前を使用して、更新可能なビューを持つ 2 つ目のデータベースを作成することです。

次に例を示します。

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;

これを行うと、データベースに対して SQL スクリプトを実行できtest2、すべての INSERT が元のテーブルに問題なく到達するはずです。

ビューを作成する必要があるテーブルが多数ある場合は、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\_%';
于 2013-02-27T01:38:24.847 に答える
0

これは、WordPress テーブルのプレフィックスを wp_ から別のものに置き換えるためのガイドです。このように、任意の mysql テーブルを更新できます。WordPressテーブルのプレフィックスの名前を変更するには?

于 2014-01-11T08:35:39.137 に答える