2011-01-17 19 views
46

Cuando creo una nueva tabla que necesita un orden definido por el usuario, mi primera idea siempre va a un nombre de columna "orden". Por supuesto, esto NO es bueno ya que es una palabra reservada.Alternativa al nombre de la columna "orden" en MySQL

¿Qué nombre le está dando a esa columna en sus modelos db?

Gracias por su ayuda.

+11

+1 para esta pregunta, a pesar de que se cerró como sugerente. A veces, como en este caso, es en realidad la opinión del desarrollador experimentado que se busca. –

Respuesta

41

A menudo uso sinónimos simples, "ordenar" por ejemplo.

4

SQL Server, al menos, le permite usar palabras clave si está entre corchetes, aunque estoy de acuerdo en que no es una gran idea.

Creo que la última vez que hice esto, utilicé SortOrder para el nombre. Sin embargo, a menudo uso prefijos que reflejan la tabla, como UsrSortOrder, por lo que no siempre es un problema.

+0

El problema es que utilizo JPA y se vuelve loco con o sin corchetes:/Tengo que cambiar el nombre. Pero finalmente no es tan malo ya que esta palabra está reservada;). Gracias por su respuesta –

+0

Supongo que JPA será más cómodo si usa el estándar ANSI para citar nombres: comillas dobles. Esos paréntesis son una "especialidad" de SQL Server, pero también se entiende el presupuesto estándar (no sé si se requiere un cambio de configuración para eso). Entonces '" orden "' podría funcionar. Pero aún así recomendaría encontrar un nombre diferente. Tener que citar nombres de objetos ocasionará problemas eventualmente. –

3

En ANSI/ISO SQL, las comillas dobles delimitan las palabras clave cuando se utilizan como nombres de columna; literales de cadena están delimitados por comillas simples:

select "from" = 'from' from foo 

Microsoft SQL Server permite el uso de corchetes en lugar de las comillas, así:

select [from] = 'from' from foo 

Pero de cualquier manera, tiene un terrible lío de su código (intente leer el anterior a alguien)

Si necesito una columna para pedir resultados, generalmente la llamo algo así como 'sequence_number' o 'sort_sequence'.

8

Sólo tiene que añadir la marca de la señal `alrededor de los nombres de las tablas y columnas, por ejemplo:

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

Esto permite caracteres y palabras clave que haya de emplearse, al menos esto funciona para la versión actual de MySQL .

+0

Lo sé, pero estoy usando Ebean y por una razón que no puedo entender, no agrega esos tics, por lo que si nombro una columna con una palabra clave reservada, falla. –

+0

+1 Gracias por su ayuda. – Jignesh

51

Uso "posición" en lugar de "orden"

+6

+1 'ORDER BY position' ciertamente lee mejor que' ORDER BY sort' - y "sort" podría confundirse con "type". – rybo111

+0

El problema con 'position' es que se considera una palabra reservada en algunos sabores de SQL. vea [esto] (https://www.postgresql.org/docs/8.3/static/sql-keywords-appendix.html). – Mustafa

Cuestiones relacionadas