2016-10-03 15 views
0

を参照する私は、このSQL Serverのクエリを実行しようとSQL Serverの外部キーが無効なテーブル '従業員の

Foreign key 'FK__dept_emp__8bc6840bee39d6cef4bd' references invalid table 'employees'. 

Foreign key 'fk__dept_emp__99bc0b2304d3f32059a9' references invalid table 'departments'. 

私はこれらのテーブルを持っているにもかかわらず:

Departments

Employees

どうすればいいですか?


EDIT:

追加されている全てのDB:

enter image description here

+0

あなたはスクリーンショットが 'DB_UBB'データベース –

+0

はいからであることを確認しています。私は今DB全体を更新します。 –

+0

表と一緒にスキーマを作成してみてください。例:従業員を使用する代わりに、dbo.employees –

答えて

0

あなたが列指定の後に外部キーを指定している場合は、代わりにCONSTRAINT句を使用してみてください:

to_date  DATE  NOT NULL, 
CONSTRAINT fk_dept_emp_dept FOREIGN KEY (emp_no) REFERENCES employees(emp_no) ON DELETE CASCADE, 
CONSTRAINT fk_dept_emp_emp FOREIGN KEY (dept_no) REFERENCES departments(dept_no) ON DELETE CASCADE, 
+0

残念ながら、同じエラーが発生します。私はマシンを再起動しようとします。 –

2

ClusteredインデックスのキーからカラムをSQLに「非表示」します。インデックスはNonclusteredです。 あなたが主の両方emp_no,dept_no

クラスタ索引は、次のクエリでのインデックスの両方から列を非表示にし、エラーAparently

CREATE INDEX (emp_no); 
CREATE INDEX (dept_no); 
+0

私は何をすべきか分かりません。 –

0

を生成します。上の複合主を作成して、私はテーブルが作成された場合でも、それはdidnのそれらを認識しません。私は<if not exist, create tables>

を追加

@Muhammadナシールが言ったように私はまた、CREATE INDEX (emp_no);CREATE INDEX (dept_no);を削除し、それが参照している問題を解決しませんでした。

ソリューション:

USE DB_UBB; 

IF NOT EXISTS (SELECT * FROM SYSOBJECTS WHERE name='employees' and xtype='U') 
    CREATE TABLE employees (
     emp_no  INT    NOT NULL, 
     birth_date DATE   NOT NULL, 
     first_name VARCHAR(14)  NOT NULL, 
     last_name VARCHAR(16)  NOT NULL, 
     gender  VARCHAR(1)  NOT NULL CHECK (gender IN('M', 'F')), 
     hire_date DATE   NOT NULL, 
     PRIMARY KEY (emp_no) 
    ); 
GO 

IF NOT EXISTS (SELECT * FROM SYSOBJECTS WHERE name='departments' and xtype='U') 
    CREATE TABLE departments (
     dept_no  CHAR(4)   NOT NULL, 
     dept_name VARCHAR(40)  NOT NULL, 
     PRIMARY KEY (dept_no), 
     UNIQUE (dept_name) 
    ); 
GO 

IF NOT EXISTS (SELECT * FROM SYSOBJECTS WHERE name='dept_emp' and xtype='U') 
CREATE TABLE dept_emp (
    emp_no  INT   NOT NULL, 
    dept_no  CHAR(4)  NOT NULL, 
    from_date DATE  NOT NULL, 
    to_date  DATE  NOT NULL, 
    FOREIGN KEY (emp_no) REFERENCES employees(emp_no) ON DELETE CASCADE, 
    FOREIGN KEY (dept_no) REFERENCES departments(dept_no) ON DELETE CASCADE, 
    PRIMARY KEY (emp_no, dept_no) 
); 
GO 
関連する問題