2011-08-08 9 views
8

¿Es correcta esta sintaxis al crear una clave externa?MySQL Sintaxis en la creación de la clave externa

create table department 
(
    departmentID int not null auto_increment primary key, 
    name varchar(30) 
) type=InnoDB; 

create table employee 
(
    employeeID int not null auto_increment primary key, 
    name varchar(80), 
    job varchar(30), 
    departmentID int not null references department(departmentID) 
) type=InnoDB; 
+0

¿Por qué no lo intentas? mysql es mejor para verificar la sintaxis que cualquier persona aquí – zerkms

+3

@zerkms Estoy preguntando esto porque tengo un libro electrónico que muestra que esta es la manera correcta de crear la clave externa - al contrario de lo que ** Doug ** dijo _Se ve como MySQL lo acepta (no se queja de la sintaxis) pero la clave externa no se ha creado realmente. Esta no es la forma en que mi instructor me enseñó. Es por eso que he tratado de verificar si esto es aceptable. – aer

Respuesta

15

Parece que MySQL acepte (no se queja acerca de la sintaxis), pero la clave externa no se crea realmente.

para crear esta clave externa, ejecute este comando:

ALTER TABLE employee ADD CONSTRAINT fk_department FOREIGN KEY (departmentID) REFERENCES department (departmentID); 
+0

¿Qué hay de la explicación de mi ebook sobre la creación de clave foránea? _ "Solo hay una nueva sintaxis en esta declaración. La última columna en la tabla de empleados es la identificación del departamento para el que trabajan los empleados. Esta es una clave externa. Declaramos esto en la definición de la tabla agregando el cláusula de referencias de la siguiente manera: DepartmentID int referencias no nula departamento (DepartmentID) Esto nos dice que el DepartmentID en la tabla empleado debe hacer referencia de nuevo a la columna de la DepartmentID en la tabla departamento "_ ¿Qué se puede decir sobre. ¿eso? – aer

+0

Esa es la explicación de los códigos que he proporcionado. – aer

+2

probé el código de mí mismo y la mesa fue creado con su código, pero la integridad referencial no se aplicó hasta que creara la clave externa por separado, con el código que he proporcionado en la respuesta. – Doug

2
create table employee 
(
    employeeID int not null auto_increment primary key, 
    name varchar(80), 
    job varchar(30), 
    departmentID int not null ADD CONSTRAINT fk_department FOREIGN KEY (departmentID) references department(departmentID) 
) 
+4

¡Bienvenido! ¿Por qué esta respuesta es mejor que la aceptada, después de 2 años? –

1
FOREIGN KEY (departmentID) REFERENCES department(departmentID) 

Gracias.!

Cuestiones relacionadas