2010-12-28 8 views
4

私は、mysqlのエンジンタイプmergeのmysqlにテーブルを設定しています。以前に作成したすべてのテーブルをマージしなければならないかどうか疑問に思っていました。例えば:私は自動的にT3テーブルを作成したコードがある場合MySQL MERGEストレージエンジン

CREATE TABLE t1 (
    a INT NOT NULL AUTO_INCREMENT PRIMARY KEY, 
    message CHAR(20)) ENGINE=MyISAM; 

CREATE TABLE t2 (
    a INT NOT NULL AUTO_INCREMENT PRIMARY KEY, 
    message CHAR(20)) ENGINE=MyISAM; 
INSERT INTO t1 (message) VALUES ('Testing'),('table'),('t1'); 
INSERT INTO t2 (message) VALUES ('Testing'),('table'),('t2'); 
CREATE TABLE total (
    a INT NOT NULL AUTO_INCREMENT, 
    message CHAR(20), INDEX(a)) 
    ENGINE=MERGE UNION=(t1,t2) INSERT_METHOD=LAST; 

は今、私は組合にこれを追加するために、マージテーブルを変更する必要がありますか?私はそれのためのALTERクエリを使用しますか?

注:私はMySQLのパーティションを使用していません。なぜなら私はmysqlバージョン5.0を持っているからです。

答えて

5

私はt3テーブルを自動的に作成するコードを持っていますが、これを結合に加えるためにマージテーブルを変更する必要がありますか?私はそれのためのALTERクエリを使用しますか? documentationから

次のいずれかの方法を使用することができ、MyISAMテーブルの異なるコレクションにMERGEテーブルを再マップするには、次の

  • DROPMERGEテーブルと再それを作りなさい。
  • ALTER TABLE tbl_name UNION=(...)を使用して、基になるテーブルのリストを変更します。

MySQL 5.0.60以降では、LTER TABLE ... UNION=()(つまり空UNION句である)下にあるテーブルの全てを除去するために使用することも可能です。

+0

INSERT_METHOD = NOの場合INSERT METHOD IS ERROR:ERROR 1036(HY000):テーブルは読み取り専用です – zloctb

関連する問題