MySQL 5.6(5.6.29-76.2-56-log Percona XtraDB Cluster)を使用しています
CREATE TABLE LIKE
を発行すると、テーブルのトリガーがコピーされません。新しいテーブルでもトリガーを取得できますか?
長い答えと短い答えはノーです!これは、MySQLのもう1つの「非機能」です。この構成は、より一般的にCTAS(_CREATE TABLE AS.... SELECT
_)として知られています-_CREATE TABLE LIKE
_構文は非標準です-MySQLの多くのように!
MySQLのドキュメントでは、 ここ -この脱落は「柔軟性」を確保するためのものであると主張しています-それほど悲しくないのであれば、あなたは笑うでしょう!
CREATE TABLE ... SELECTは、インデックスを自動的に作成しません。これは、ステートメントを可能な限り柔軟にするために意図的に行われます。
次のようにSELECT
の前に宣言することで、それら(インデックス)を作成できます。
作成したテーブルにインデックスを作成する場合は、SELECTステートメントの前に次のインデックスを指定する必要があります。
_> mysql> CREATE TABLE bar (UNIQUE (n)) SELECT n FROM foo;
_
しかし、TRIGGER
s、FUNCTION
s、および_STORED PROCEDURE
_ sは運が悪いです。
これが重要な場合は、テーブル継承メカニズムを備えたPostgreSQLで運試しをすることができます。これにより、スキーマの変更がプロページされますが、WITH INDEXES
、WITH FUNCTIONS
、WITH _STORED PROCEDURES
_構文ができなかった理由がわかりません。紹介されていません。
機能リクエストを提出した場合(幸運を祈ります!MySQLにはまだ_CHECK CONSTRAINT
_ sがありません)、ここにリンクを投稿していただければ、喜んで_"me-too"
_を提出します。 。
_CREATE TABLE LIKE
_も同様に機能不全のオプションです ここ から
CREATE TABLE ... LIKEは、元のテーブルに指定されたDATADIRECTORYまたはINDEXDIRECTORYテーブルオプション、あるいは外部キー定義を保持しません。