2012-05-03 2 views
0

状況は次のとおりです。 私はスタッフのためのテーブルとコースのためのテーブルを持っています。 もちろん、staff_idを参照するコーディネーターという列があります。 これは、スタッフの中にはコーディネーターがいて、そうでないものなどがあります。別のテーブルからSQLを参照するにはどうすればよいですか?

Staff_idはIDENTITYなので、自動的にインクリメントしています。コーステーブルでは、インクリメント。

この場合、どのようにチェック制約を実装するのかは分かりません。

+2

外部キー制約のように聞こえます。 Googleの外部キーの制約または参照整合性は、あなたを開始する必要があります。 – Dan

答えて

1

私はそれが自分自身を参照するように適切にあなたがテーブルに外部キー制約を追加することができ、あなたの要件を理解していた場合:

ALTER TABLE Staff 
ADD CONSTRAINT FK_Staff_Coordinator FOREIGN KEY (Coordinator) 
REFERENCES Staff (StaffID) 

ADENDUM

私は私はあなたの要件を誤解していたと思います、私はコーステーブルについての部分を逃した。

ALTER TABLE Course 
ADD CONSTRAINT FK_Course_Coordinator FOREIGN KEY (Coordinator) 
REFERENCES Staff (StaffID) 

あなたはもちろん制約のために、独自の命名規則を実装するのは自由です。だから今は、コマンドは次のようになり、その場合には、もちろんテーブルはスタッフのテーブルにリンクする必要があると考えています。

2

私はコーステーブルでこの自動インクリメントに従わないことを確認する必要があります。

コーステーブルのcoordinatorフィールドが自動的にインクリメントされないようにすることを意味しますか?あなたがそれを伝えない限り、それはありません。

例えばこの2つのテーブルが正常に動作します:もちろん

CREATE TABLE Staff 
(
    `staff_id` INT NOT NULL AUTO_INCREMENT, 
    `name` VARCHAR(64), 
    PRIMARY KEY (`staff_id`) 
) 

CREATE TABLE Courses 
(
    `course_id` INT NOT NULL AUTO_INCREMENT, 
    `coordinator_id` INT NOT NULL, 
    `coursename` VARCHAR(64), 
    PRIMARY KEY (`course_id`), 
    INDEX `coordid` (`coordinator_id`) 
) 

、GarethDが言うように、あなたはその後、さらにcoordinator_idが正しく入力され、対応するレコードがスタッフに存在することを保証するために制約を追加することができます。

関連する問題