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

Error al crear tabla

Estas en el tema de Error al crear tabla en el foro de Mysql en Foros del Web. Hola! Soy un novatón que está empezando con SQL y me está dando unos fallos que, aun mirando en google, soy incapaz de resolver CREATE ...
  #1 (permalink)  
Antiguo 23/05/2012, 07:50
 
Fecha de Ingreso: mayo-2012
Mensajes: 1
Antigüedad: 11 años, 11 meses
Puntos: 0
Error al crear tabla

Hola! Soy un novatón que está empezando con SQL y me está dando unos fallos que, aun mirando en google, soy incapaz de resolver

CREATE TABLE Atentado(
fecha DATE,
hora NUMBER(4),
CONSTRAINT Atentado_PK(PRIMARY KEY('fecha','hora')),
nombre REFERENCES Grupo_Sospechoso(nombre),
estadoActual VARCHAR(20),
CONSTRAINT cons_Atentado_estadoActual CHECK(tipo IN('Resuelto','En Investigación','Cerrado')),
objetivos VARCHAR(100),descripcion VARCHAR(400)
);

La tabla anterior es la que me está dando problemas, y es que la orden:
CONSTRAINT Atentado_PK(PRIMARY KEY('fecha','hora')),
me da el error:
missing rigth parenthesis

El caso es que dependen unas cuantas tablas de ésta, y no puedo avanzar por culpa del fallo. Un saludo!

Última edición por ziterea; 23/05/2012 a las 08:19
  #2 (permalink)  
Antiguo 23/05/2012, 12:55
Colaborador
 
Fecha de Ingreso: enero-2007
Ubicación: México
Mensajes: 2.097
Antigüedad: 17 años, 3 meses
Puntos: 447
Respuesta: Error al crear tabla

Hola ziterea:

La sintaxis que estás poniendo corresponde a SQL Server, no a MySQL... no sé si te equivocaste de foro o efectivamente estás tratando de ejecutar el script en una BD de MySQL. Si es lo primero, deberás publicar tu pregunta directamente en el foro de SQL Server:

http://www.forosdelweb.com/f87/

Si es lo segundo, entonces tienes varios problemas que resolver, ya que la sintaxis no corresponde a MySQL... en primer lugar, el tipo de datos NUMBER no existe en mysql. Si tu objetivo es almacenar una hora deberías utilizar el tipo TIME:

http://dev.mysql.com/doc/refman/5.0/es/time.html

O en su defecto utilizar alguno de los tipos de datos numéricos que soporta MySQL:

http://dev.mysql.com/doc/refman/5.0/...umn-types.html

Para definir una llave primaria compuesta, no hay necesidad de colocar la palabra CONSTRAINT... basta con poner algo como esto:

La referencia que pones debes declararla como una FOREIGN KEY:

http://dev.mysql.com/doc/refman/5.0/...nstraints.html

En cuanto al CONSTRAINT que estás construyendo MySQL no soporta este tipo de restricciones, sin embargo pose un tipo de datos llamado ENUM que sirve justamente para limitar los valores que puede tomar una columna determinada.

http://dev.mysql.com/doc/refman/5.0/es/enum.html

De tal manera que la sintaxis válida en MySQL para crear una tabla como la que quieres sería más o menos así:

Código:
CREATE TABLE atentado(
  fecha DATE NOT NULL,
  hora TIME NOT NULL,
  estadoActual ENUM('Resuelto','En Investigación','Cerrado'),
  PRIMARY KEY (`fecha`, `hora`),
  FOREIGN KEY (nombre)
     REFERENCES Grupo_Sospechoso(nombre)
     ON UPDATE CASCADE ON DELETE RESTRICT
);
Saludos
Leo.
  #3 (permalink)  
Antiguo 23/05/2012, 19:43
Avatar de kar_kastillo  
Fecha de Ingreso: mayo-2012
Mensajes: 32
Antigüedad: 11 años, 11 meses
Puntos: 2
Respuesta: Error al crear tabla

te recomiendo usar llaves primarias y foranes tipo entero...

saludos.

Etiquetas: sql, tabla
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

SíEste tema le ha gustado a 1 personas




La zona horaria es GMT -6. Ahora son las 17:13.