FAQ

[MySQL-es] Definir tablas con Llaves Foraneas

Amable Ortega
Jul 25, 2006 at 7:55 pm
De antemano gracias por las respuestas que me puedan dar.

Quisiera saber de que se trata el error, cómo puedo corregir este error al
momento de crear la tabla.

Uso mysql version 5

consulta SQL:

CREATE TABLE area (
cod_are INTEGER(2) UNSIGNED NOT NULL AUTO_INCREMENT,
nombre CHAR(40) NOT NULL,
PRIMARY KEY(cod_are)
)
TYPE=InnoDB;

CREATE TABLE facultad (
cod_fac INTEGER(3) UNSIGNED NOT NULL AUTO_INCREMENT,
cod_are INTEGER(2) UNSIGNED NOT NULL,
nombre CHAR(80) NOT NULL,
PRIMARY KEY(cod_fac),

INDEX facultad_area(cod_are),
FOREIGN KEY(cod_are)
REFERENCES area(cod_are)
ON DELETE RESTRICT
ON UPDATE CASCADE
)
TYPE=InnoDB;




MySQL ha dicho:

#1064 - You have an error in your SQL syntax; check the manual that
corresponds to your MySQL server version for the right syntax to use near
'area(cod_are)
ON DELETE RESTRICT
ON UPDATE CASCADE
)
TYPE=InnoDB' at line 8
reply

Search Discussions

2 responses

  • Ing. Edwin Cruz at Jul 25, 2006 at 8:33 pm
    Area es una palabra reservada, esto seguramente te funcionará:

    CREATE TABLE area (
    cod_are INTEGER(2) UNSIGNED NOT NULL AUTO_INCREMENT,
    nombre CHAR(40) NOT NULL,
    PRIMARY KEY(cod_are)
    )
    ENGINE=InnoDB;

    CREATE TABLE facultad (
    cod_fac INTEGER(3) UNSIGNED NOT NULL AUTO_INCREMENT,
    cod_are INTEGER(2) UNSIGNED NOT NULL,
    nombre CHAR(80) NOT NULL,
    PRIMARY KEY(cod_fac),
    INDEX facultad_area(cod_are),
    FOREIGN KEY(cod_are)
    REFERENCES `area`(cod_are)
    ON DELETE RESTRICT
    ON UPDATE CASCADE
    )
    ENGINE=InnoDB;

    +----------------------------------------+
    ISC Edwin Cruz <ecr...@...mx> | +----+
    Transportes Medel Rogero SA de CV | | |
    Desk: +52 (449) 910 30 90 x3054 | +----+
    MX Mobile: +52 (449) 111 29 03 |
    Aguascalientes, Mexico |
    http://www.medel.com.mx |
    +----------------------------------------+



    -----Mensaje original-----
    De: Amable Ortega
    Enviado el: Martes, 25 de Julio de 2006 04:27 p.m.
    Para: mys...@...com
    Asunto: Definir tablas con Llaves Foraneas


    De antemano gracias por las respuestas que me puedan dar.

    Quisiera saber de que se trata el error, cómo puedo corregir este error al
    momento de crear la tabla.

    Uso mysql version 5

    consulta SQL:

    CREATE TABLE area (
    cod_are INTEGER(2) UNSIGNED NOT NULL AUTO_INCREMENT,
    nombre CHAR(40) NOT NULL,
    PRIMARY KEY(cod_are)
    )
    TYPE=InnoDB;

    CREATE TABLE facultad (
    cod_fac INTEGER(3) UNSIGNED NOT NULL AUTO_INCREMENT,
    cod_are INTEGER(2) UNSIGNED NOT NULL,
    nombre CHAR(80) NOT NULL,
    PRIMARY KEY(cod_fac),

    INDEX facultad_area(cod_are),
    FOREIGN KEY(cod_are)
    REFERENCES area(cod_are)
    ON DELETE RESTRICT
    ON UPDATE CASCADE
    )
    TYPE=InnoDB;




    MySQL ha dicho:

    #1064 - You have an error in your SQL syntax; check the manual that
    corresponds to your MySQL server version for the right syntax to use near
    'area(cod_are)
    ON DELETE RESTRICT
    ON UPDATE CASCADE
    )
    TYPE=InnoDB' at line 8



    --
    Lista de Correos de MySQL
    Para el historial de la lista: http://lists.mysql.com/mysql-es Para cancelar
    inscripción: ecr...@...mx" rel="nofollow">http://lists.mysql.com/mysql-es?unsub=ecr...@...mx
  • Amable Ortega at Jul 25, 2006 at 9:28 pm
    Gracias por la ayuda Ing Edwin Cruz.... No me hubiese dado cuenta de ese
    problema a tiempo, tenia mucho rato buscando la solución, pero todo lo
    referente a sintaxis parecía estar bien... Gracias nuevamente por la
    correccion.

Related Discussions

Discussion Navigation
viewthread | post

2 users in discussion

Amable Ortega: 2 posts Ing. Edwin Cruz: 1 post