В MySQL нет способа автоматически префиксных таблиц так, как вы описываете. @MichaelBerkowski правильно.
Лучшее, что я могу предложить, это создать вторую базу данных с обновляемыми видами, используя неподписанные имена, в качестве интерфейсов для ваших префиксных имен таблиц.
Вот пример:
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
и все e 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\_%';
Нет, ваш сценарий должен будет учитывать это. MySQL знает только имя таблицы, которое имеет (префикс) –
Майкл, если мы можем использовать некоторую внутреннюю опцию в mysql, например ASSUME_GLOBAL_PREFIX, и мы устанавливаем ее как ** префикс _ **, это должно работать. Но есть ли вариант для этого? =/ – GarouDan
Могу сказать, что в MySQL, с которым я когда-либо встречался в документации, такой опции нет. Я надеюсь, что кто-то докажет мне, что я ошибаюсь в ответах ниже, потому что я согласен, что это было бы полезно. Если вы сообщите нам, как вы запускаете скрипт, возможно, у кого-то будет предложение взлома мастера. –