2011-01-17 34 views
46

Quando creo una nuova tabella che richiede un ordine definito dall'utente, la mia prima idea va sempre al nome di una colonna "order". Certo, questo NON è buono dato che è una parola riservata.Alternativa al nome colonna "order" in MySQL

Quale nome stai dando a quella colonna nei tuoi modelli db?

Grazie per il vostro aiuto.

+11

+1 per questa domanda, anche se è stato chiuso come l'opinione stimolante. A volte, come in questo caso, è in realtà l'opinione dello sviluppatore esperto che viene cercato. –

risposta

41

Spesso uso sinonimi semplici, "ordina" per esempio.

4

SQL Server, almeno, consente di utilizzare parole chiave se racchiuso tra parentesi quadre, anche se sono d'accordo non è una grande idea.

Credo che l'ultima volta che l'ho fatto, ho usato SortOrder per il nome. Tuttavia, utilizzo spesso prefissi che riflettono la tabella come UsrSortOrder, quindi non è sempre un problema.

+0

Il problema è che io uso JPA e impazzisce con o senza parentesi:/Devo cambiare il nome. Ma alla fine non è così male poiché questa parola è riservata;). Grazie per la risposta –

+0

Immagino che JPA sarà più comodo se si utilizza lo standard ANSI per la citazione dei nomi: virgolette doppie. Queste parentesi sono una "specialità" di SQL Server ma la citazione standard è compresa (non so se è necessaria una modifica alla configurazione per quello). Quindi "ordine" potrebbe effettivamente funzionare. Ma consiglierei comunque di trovare un nome diverso. Dovendo citare i nomi degli oggetti, alla fine si avranno dei problemi. –

3

In SQL ANSI/ISO, le doppie virgolette delimitano le parole chiave quando vengono utilizzate come nomi di colonne; letterali stringa sono delimitati da virgolette singole:

select "from" = 'from' from foo 

Microsoft SQL Server consente l'utilizzo di parentesi quadre al posto delle virgolette così:

select [from] = 'from' from foo 

Ma in entrambi i casi, si fa un pasticcio terribile il tuo codice (prova a leggere quanto sopra a qualcuno.)

Se ho bisogno di una colonna per ordinare i risultati, generalmente lo chiamo qualcosa come "numero_di_ sequenza" o "ordine_seguito".

8

È sufficiente aggiungere il segno di spunta `intorno i nomi di tabelle e colonne, ad esempio:

CREATE TABLE `order` 
    (
     `order#` char(4) NOT NULL, 
     `ord_date` DATE, 
     Primary Key (`order#`) 
) 
    ENGINE=InnoDB; 

Questo permette di caratteri speciali e le parole chiave da utilizzare, almeno questo funziona per la versione corrente di MySql .

+0

Lo so, ma sto usando Ebean e per una ragione che non riesco a capire, non aggiunge quei tick, quindi se nomino una colonna usando una parola chiave riservata, fallisce. –

+0

+1 Grazie per il vostro aiuto. – Jignesh

51

io uso "posizione" in luogo di "ordine"

+6

+1 'ORDER BY position' sicuramente legge meglio di' ORDER BY sort' - e "sort" potrebbe essere confuso con "type". – rybo111

+0

Il problema con 'position' è che è considerato una parola riservata in alcune varianti SQL. vedere [questo] (https://www.postgresql.org/docs/8.3/static/sql-keywords-appendix.html). – Mustafa