2012-01-12 9 views
5

In Oracle, se avevo bisogno di dichiarare qualcosa con lo stesso tipo di un'altra colonna, posso semplicemente usare %type:Esiste una versione di MySQL del% TIPO di Oracle

Create table foo(
    copiedType OTHER_TABLE.COLUMN_NAME%TYPE 
    /* yada yada yada... */ 

Esiste un operatore equivalente in MySQL?

+0

Non penso sia possibile in MySQL. –

+0

@EmmanuelN Sì ... non pensavo così. Sai, Oracle non è perfetto, ma ha un paio di sottigliezze che manca a MySQL. (Detto questo, PostGreSQL è il migliore di entrambi i mondi, ma sono innamorato di quel DB) – cwallenpoole

risposta

2

Bene, la risposta breve, a quanto pare è "no", e mentre può essere falso se sei disposto a creare una funzione memorizzata (o usare un'altra lingua) e creare il tuo tavolo dal tuo motore di analisi personalizzato, non ne vale la pena. C'est sera ...

0

A meno che non mi manca qualcosa l'unica alternativa alla Oracle %type in MySQL è la seguente,

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

Che sono abbastanza sicuro che non si possa usare all'interno di un'istruzione 'CREATE TABLE'. – Mchl

+0

@Dennis So come ottenere un tipo di colonna, ma poiché semplicemente non voglio pensare all'integrità dello schema (il pensiero è pericoloso), preferirei avere qualcosa che possa usare in una dichiarazione di variabile o in una definizione di colonna. – cwallenpoole

+0

@cwallenpoole Comprensibile. In teoria dovresti essere in grado di creare una procedura che memorizza l'output sopra riportato in una variabile e quindi usa detta variabile per creare la tabella che stai tentando di costruire. Non ho provato questo però così non potrei dire per certo che avrebbe funzionato. –

-1

è possibile utilizzare questo in procedure come questo

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

e quindi si può usare facilmente @field_type variabile.

+0

Come notato nella mia risposta, non è possibile digitare una variabile in base al tipo di un altro come parte della sintassi 'CREATE TABLE'. Avere accesso ad essa in una variabile non è così utile – cwallenpoole

Problemi correlati