2012-01-12 17 views
5

のMySQLバージョンでは、私は別の列と同じ型で何かを宣言するために必要であれば、私は単に%typeを使用することができ、ありますか?オラクルはオラクルの%TYPE

+0

私はそれがMySQLで可能ではないと思います。 –

+0

@ EmmanuelN Yea ...私はそうは思わなかった。オラクルは完璧ではありませんが、MySQLには欠けていることがいくつかあります。 (つまり、PostGreSQLは両方の世界で最高ですが、私はそのDBに恋しています) – cwallenpoole

答えて

2

まあ、短い答えは「ノー」であり、それことができますがをしないのですがない限りストアドファンクション(または別の言語を使用する)を作成して、独自のカスタムベーキング解析エンジンでテーブルを作成する場合は偽造してください。単に価値がありません。 C'ESTセラ...

0

私は何か、それが判明したとしてMySQLでOracle %typeへの唯一の選択肢は、以下の、

SELECT DATA_TYPE FROM INFORMATION_SCHEMA.COLUMNS 
    WHERE table_name = 'tbl_name' AND COLUMN_NAME = 'col_name'; 
+0

私はあなたが 'CREATE TABLE'ステートメント内で使うことはできないと確信しています。 – Mchl

+0

@Dennis私は列の型を取得する方法を知っていますが、スキーマの完全性(思考は危険です)を考える必要はないので、変数宣言や列定義で使用できるものを持つことをお勧めします。 – cwallenpoole

+0

@cwallenpoole理解しやすい。理論的には、上記の出力を変数に格納するプロシージャを作成し、次にその変数を使用して作成しようとしているテーブルを作成する必要があります。私はこれを試したことがないので、それがうまくいくかどうかは言えません。 –

-1

あなたはこの

SET @field_type = (select DATA_TYPE from INFORMATION_SCHEMA.columns 
        where TABLE_NAME='users' and COLUMN_NAME='name'); 

のような手順でこれを使用することができ、その後、あなたは簡単に@field_type変数を使用することができます。

+0

私の答えで述べたように、 'CREATE TABLE'構文の一部として他の変数の型に基づいて1つの変数をタイプすることはできません。変数にアクセスすることはそれほど有用ではありません – cwallenpoole