状況は次のとおりです。 私はスタッフのためのテーブルとコースのためのテーブルを持っています。 もちろん、staff_idを参照するコーディネーターという列があります。 これは、スタッフの中にはコーディネーターがいて、そうでないものなどがあります。別のテーブルからSQLを参照するにはどうすればよいですか?
Staff_idはIDENTITYなので、自動的にインクリメントしています。コーステーブルでは、インクリメント。
この場合、どのようにチェック制約を実装するのかは分かりません。
状況は次のとおりです。 私はスタッフのためのテーブルとコースのためのテーブルを持っています。 もちろん、staff_idを参照するコーディネーターという列があります。 これは、スタッフの中にはコーディネーターがいて、そうでないものなどがあります。別のテーブルからSQLを参照するにはどうすればよいですか?
Staff_idはIDENTITYなので、自動的にインクリメントしています。コーステーブルでは、インクリメント。
この場合、どのようにチェック制約を実装するのかは分かりません。
私はそれが自分自身を参照するように適切にあなたがテーブルに外部キー制約を追加することができ、あなたの要件を理解していた場合:
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)
あなたはもちろん制約のために、独自の命名規則を実装するのは自由です。だから今は、コマンドは次のようになり、その場合には、もちろんテーブルはスタッフのテーブルにリンクする必要があると考えています。
私はコーステーブルでこの自動インクリメントに従わないことを確認する必要があります。
コーステーブルの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が正しく入力され、対応するレコードがスタッフに存在することを保証するために制約を追加することができます。
外部キー制約のように聞こえます。 Googleの外部キーの制約または参照整合性は、あなたを開始する必要があります。 – Dan