tipos - ¿Cómo escapo de las palabras reservadas usadas como nombres de columna? MySQL/Crear tabla
tipos de datos en mysql (3)
Debería usar el caracter de la marca de retroceso (`), por ejemplo:
create table if not exists misc_info (
id INTEGER PRIMARY KEY AUTO_INCREMENT NOT NULL,
`key` TEXT UNIQUE NOT NULL,
value TEXT NOT NULL)ENGINE=INNODB;
Estoy generando tablas de clases en .NET y un problema es que una clase puede tener una key
nombre de campo que es una palabra reservada de MySQL. ¿Cómo escapo en una declaración de tabla de creación? (Nota: El otro problema a continuación es texto debe ser un tamaño fijo para ser indexado / único)
create table if not exists misc_info (
id INTEGER PRIMARY KEY AUTO_INCREMENT NOT NULL,
key TEXT UNIQUE NOT NULL,
value TEXT NOT NULL)ENGINE=INNODB;
Puede usar comillas dobles si el modo ANSI SQL está habilitado
CREATE TABLE IF NOT EXISTS misc_info
(
id INTEGER PRIMARY KEY AUTO_INCREMENT NOT NULL,
"key" TEXT UNIQUE NOT NULL,
value TEXT NOT NULL
)
ENGINE=INNODB;
o la marca trasera patentada escapando de lo contrario. (En esta respuesta se explica dónde encontrar el caracter `
en varios diseños de teclado)
CREATE TABLE IF NOT EXISTS misc_info
(
id INTEGER PRIMARY KEY AUTO_INCREMENT NOT NULL,
`key` TEXT UNIQUE NOT NULL,
value TEXT NOT NULL
)
ENGINE=INNODB;
(Fuente: Manual de referencia de MySQL, 9.3 Palabras reservadas )
Si está interesado en la portabilidad entre diferentes servidores SQL, debe usar consultas ANSI SQL. El escapado de cadenas en ANSI SQL se realiza mediante el uso de comillas dobles ("). Desafortunadamente, este método de escape no es portátil para MySQL, a menos que esté configurado en modo de compatibilidad ANSI.
Personalmente, siempre inicio mi servidor MySQL con el argumento --sql-mode = ''ANSI'' ya que esto permite ambos métodos de escape. Si está escribiendo consultas que se ejecutarán en un servidor MySQL que no fue configurado / está controlado por usted, esto es lo que puede hacer:
- Escriba todas sus consultas SQL en ANSI SQL
Adjuntarlos en las siguientes consultas específicas de MySQL:
SET @OLD_SQL_MODE=@@SQL_MODE; SET SESSION SQL_MODE=''ANSI''; -- ANSI SQL queries SET SESSION SQL_MODE=@OLD_SQL_MODE;
De esta forma, las únicas consultas específicas de MySQL se encuentran al principio y al final de su script .sql. Si desea enviarlos a un servidor diferente, simplemente elimine estas 3 consultas y ya está todo listo. De manera más conveniente, podría crear un script llamado: script_mysql.sql que contendría las consultas de configuración de modo anteriores, originaría un script script_ansi.sql y restablecería el modo.