2016-06-20 13 views
0

私はSQL Serverが新しく、あるテーブルの外部キーを別のテーブルのプライマリキーにリンクするのに苦労しています。ここで私が持っているものです。プライマリキーに外部キーを接続できません

Create table "Projects" 
(ProjectID Int identity(1,1) primary key, 
ProjectName VarChar(30), 
ProjStartDate smalldatetime, 
) 

そして第三にテーブルをリンクしようとした:

これは、私が2番目のテーブルを作成し

Create table "Employees" 
(EmpID Int identity(1,1) primary key, 
EmpNo Int, 
EmpFName Varchar(30), 
EmpLName Varchar(30), 
JobID int references JobDetails(JobID) 
) 

私の最初のテーブルである

Create table "HrsWkd" 
(HrsID Int identity(1,1) primary key, 
ProjectID int references Projects(ProjectID), 
HoursWorked int, 
EmpID int references Employees(EmpID) 
) 

ちなみに、(EmpID)には、「従業員」の無効な列を参照していることを示す赤い波線があります。

私は、このように、この第三のテーブルにデータを入力しようとした場合:

メッセージ547、レベル16、状態0、ライン12を

insert into HrsWkd values 
    (1,1,50), 
    (1,2,75), 
    (2,3,85) 

が、私はこのメッセージが表示されます

INSERTステートメントがFOREIGN KEY制約 "FK__HrsWkd__EmpID__68487DD7"と競合しました。 データベース "New_AP"、テーブル "dbo.Employees"、列 "EmpID"で競合が発生しました。

ステートメントが終了しました。

私は最後の2時間、これで私の髪を引っ張ってきました。私はそれが単純なものだと思っていますが、私はそれを見ることができません。

ありがとうございます!

答えて

0

twotoast

私は長い時間のためのSQL Serverと特異的に動作しませんが、NULL従業員を持つレコードを挿入しようとしています。

HrsWkdテーブルの作成中にNULL値を許可する必要があります。私は文法について100%確信していません。テーブルの作成中にこのようなものがあります。

CREATE TABLE "HrsWkd" (
    HrsID INT IDENTITY(1,1) PRIMARY KEY, 
    ProjectID INT FOREIGN KEY REFERENCES Projects(ProjectID), 
    HoursWorked INT, 
    EmpID INT NULL FOREIGN KEY REFERENCES Employees(EmpID) 
) 

それ以外の場合は、デフォルトのFK制約に違反しています。

+0

ありがとうございました。私はそれを試して、問題は残っています。私は問題を誤って特定したと思う。実際の問題は、「HrsWkd」テーブルと、従業員(EmpID)にリンクする最後の行であるようです。 HrsWkdテーブルはEmpIDへのリンクが気に入らないようで、無効な列だと言います。 。 。 。 。 。 – twotoast

+0

私はあなたのテーブル設定を複製した後、愚かな答えに気付きました。しかし、MariaDBを使用してローカルマシン上で実行するには、少し修正する必要があります。それは働いたが、私は別のデータベースエンジンを使用していると言ったように。 SQL Serverに関連したもので、テストするマシンはありません – andre

0

だから、私はその問題が何かを知りました。私はそれがあまりにも明白だったので、それに言及するのはほとんど恥ずかしいですが、将来誰かを助けるかもしれません。

プライマリと外部の間のリンクは問題なく、問題はデータを入力していました。

  1. 「プロジェクト」のデータをすべて追加していないため、「HrsWkd」で参照しようとしました。
  2. カラムが設定されたのと同じ順序で 'HrsWkd'にデータを入力しなかったため、無効なデータを追加しようとしていました。テーブルをあまり使いすぎて、別の注文/結果を試してみたところ、追加しようとしたときにデータが一致しなくなってしまった。

まあ、これは私が(うまくいけば)もう一度やることはありません何かである - ので、「偉大な学習機会」!!!!

関連する問題