Foros del Web » Programación para mayores de 30 ;) » Bases de Datos General » Mysql »

Apostrofes entre el nombre de la tabla?

Estas en el tema de Apostrofes entre el nombre de la tabla? en el foro de Mysql en Foros del Web. Hola, estoy viendo un tutorial sobre frameworks y me ha aparecido esta tabla: Código: CREATE TABLE 'posts' ( 'id' INT( 10 ) NOT NULL AUTO_INCREMENT ...
  #1 (permalink)  
Antiguo 23/02/2009, 10:55
 
Fecha de Ingreso: septiembre-2008
Mensajes: 146
Antigüedad: 15 años, 8 meses
Puntos: 1
Apostrofes entre el nombre de la tabla?

Hola,

estoy viendo un tutorial sobre frameworks y me ha aparecido esta tabla:


Código:
CREATE TABLE 'posts' ( 
'id' INT( 10 ) NOT NULL AUTO_INCREMENT PRIMARY KEY , 
'title' VARCHAR( 255 ) NOT NULL , 
'text' TEXT NOT NULL , 
'modified' TIMESTAMP ON UPDATE CURRENT_TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP 
) ENGINE = MYISAM ;

Intentar crear la tabla con esa sentencia, me ha dado error, y hasta que no he quitado los apostrofes de el nombre de la tabla y de los nombres de los campos, no me ha dejado crear la tabla.

¿Que opinais?¿hay casos en que es posible ese tipo de sintaxis (con los apostrofes)?

Ciao
  #2 (permalink)  
Antiguo 23/02/2009, 11:10
Colaborador
 
Fecha de Ingreso: marzo-2008
Ubicación: Cáceres
Mensajes: 3.735
Antigüedad: 16 años, 1 mes
Puntos: 300
Respuesta: Apostrofes entre el nombre de la tabla?

No los apóstrofes, pero sí los acentos graves, como en este ejemplo.
CREATE TABLE `posts` (
`id` INT( 10 ) NOT NULL AUTO_INCREMENT PRIMARY KEY ,
`title` VARCHAR( 255 ) NOT NULL ,
`text` TEXT NOT NULL ,
`modified` TIMESTAMP ON UPDATE CURRENT_TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP
) ENGINE = MYISAM
No es obligado usar el acento, pero sí es útil, pues con ellos puedes usar palabras separadas con espacio como nombre de campo(no te lo recomiendo) y puedes usar palabras prohibidas como nombre de campo(esto menos). El uso de estos acentos confunde a algunos que cuando copian el código lo convierten o lo cambian a apóstrofes, que están reservados para escribir string, cadenas de texto.
  #3 (permalink)  
Antiguo 23/02/2009, 11:27
 
Fecha de Ingreso: septiembre-2008
Mensajes: 146
Antigüedad: 15 años, 8 meses
Puntos: 1
Respuesta: Apostrofes entre el nombre de la tabla?

Cita:
Iniciado por jurena Ver Mensaje
No los apóstrofes, pero sí los acentos graves, como en este ejemplo.
CREATE TABLE `posts` (
`id` INT( 10 ) NOT NULL AUTO_INCREMENT PRIMARY KEY ,
`title` VARCHAR( 255 ) NOT NULL ,
`text` TEXT NOT NULL ,
`modified` TIMESTAMP ON UPDATE CURRENT_TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP
) ENGINE = MYISAM
No es obligado usar el acento, pero sí es útil, pues con ellos puedes usar palabras separadas con espacio como nombre de campo(no te lo recomiendo) y puedes usar palabras prohibidas como nombre de campo(esto menos). El uso de estos acentos confunde a algunos que cuando copian el código lo convierten o lo cambian a apóstrofes, que están reservados para escribir string, cadenas de texto.
Hola no entiendo tu respuesta...lo que aparecen en el turorial son apostrofes y no acentos graves..
  #4 (permalink)  
Antiguo 23/02/2009, 11:32
Colaborador
 
Fecha de Ingreso: marzo-2008
Ubicación: Cáceres
Mensajes: 3.735
Antigüedad: 16 años, 1 mes
Puntos: 300
Respuesta: Apostrofes entre el nombre de la tabla?

Creo que el tutorial está mal. Mira en los ejemplos del manual de MySQL o en lo que genera el PHPMyAdmin y verás que son acentos y no apóstrofes para los nombres de tablas y campos.

Esto está sacado del manual de MySQL, referido a tablas InnoDB:
Cita:
El procesador de sentencias (parser) de InnoDB permite emplear acentos graves (ASCII 96) para encerrar los nombres de tablas y columnas en una clásusula FOREIGN KEY ... REFERENCES .... El parser de InnoDB también toma en cuenta lo establecido en la variable de sistema lower_case_table_names.

Última edición por jurena; 23/02/2009 a las 11:52
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 08:38.