2011-08-08 23 views
8

Bu sözdizimi bir Yabancı Anahtar oluştururken doğru mu?Yabancı Anahtar oluştururken MySQL Sözdizimi

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

Neden sadece denemiyorsunuz? mysql sözdizimini kontrol etmekten daha iyidir burada – zerkms

+3

@zerkms Bunu soruyorum çünkü bunun yabancı anahtarın yaratılmasının doğru yolu olduğunu gösteren bir e-Kitabım var - aksi halde ne * Doug ** dedi ki: MySQL gibi görünüyor kabul eder (sözdizimi hakkında şikayette bulunmaz) ancak yabancı anahtar aslında yaratılmamıştır. Bu benim hocamın bana öğrettiği yol değildir. Bu yüzden bu şekilde kabul edilebilir olup olmadığını doğrulamaya çalıştım. – aer

cevap

15

MySQL (sözdizimi hakkında şikayet etmiyor) bunu kabul eder ancak yabancı anahtar aslında oluşturulmaz gibi görünüyor.

, bu yabancı anahtarı oluşturmak Bu komutu çalıştırmak için:

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

E-kitabımın yabancı anahtar oluşturma hakkındaki açıklaması. _ "Bu ifadede yalnızca bir yeni sözdizimi parçası var. Çalışan tablosundaki son sütun, çalışanların çalıştığı bölümün kimliği. Bu yabancı bir anahtardır. Bunu tablo tanımında ekleyerek beyan ederiz. referanslar fıkra şöyle: DepartmentID değil boş referanslar bölümü (DepartmentID) Bu çalışanın tablosundaki DepartmentID bölüm tablosundaki DepartmentID sütuna geri başvurulan gerektiğini söyler int "_ ne hakkında söyleyebiliriz. o? – aer

+0

Sağladığım kodların açıklaması budur. – aer

+2

Kodu kendim denedim ve tablo sizin kodunuzla oluşturuldu, ancak yabancı anahtarını ayrı olarak oluşturup cevapta verdiğim kodla birlikte referans bütünlüğü uygulanmadı. – 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

Hoş Geldiniz! Bu cevap neden 2 yıl sonra kabul edilenlerden daha iyi? –

1
FOREIGN KEY (departmentID) REFERENCES department(departmentID) 

teşekkür ederiz.!