2017-12-16 8 views
-1

私の質問はちょっとばかげていると思いますが、解決できません。ここに私の問題は、次のとおりです。SQL外来キーを作成できません

create table Product 
(
    ProductID int PRIMARY KEY, 
    ProductName varchar(16), 
    RetrailPrice int, 
    WholesalePrice int, 
    MonthDelivery int, 
    Waste int, 
    StorageName varchar(16) 
) 

create table Storage 
(
    StorageID int PRIMARY KEY, 
    StorageName varchar(16), 
    City varchar(16), 
    Employees int, 
    Area int, 
    ProductID int 
) 

そしてもちろん、私は彼らに

alter table Product 
    add FOREIGN KEY (StorageName) references Storage(StorageName) 

をリンクしたいしかし、私はそれを行うことができない、私はどこか間違っている:/

+1

あなたは主キー、単なる列を参照しません。 – Ronald

+1

あなたはデータベースエンジンを言うのを忘れました。また、 '外来キーを作成できません'という実際の完全なエラーメッセージはありませんか? –

答えて

1

あなたが参照する必要がStorageテーブルからのPK StorageNameは、FKにとって貧弱な選択です。異なる都市に同じ名前のストレージがある場合はどうなりますか?

はStorageID

create table Product(
ProductID int PRIMARY KEY, 
ProductName varchar(16), 
RetrailPrice int, 
WholesalePrice int, 
MonthDelivery int, 
Waste int, 
StorageID int) --this has chnaged, it will hold the id/PK of the Storage 

create table Storage(
StorageID int PRIMARY KEY, 
StorageName varchar(16), 
City varchar(16), 
Employees int, 
Area int, 
ProductID int) 

し、次いでProductテーブルにStorageNameを置き換えます

alter table Product 
add FOREIGN KEY (StorageID) references Storage(StorageID) 
関連する問題