0
1つのテーブルを見て、それを使用して別のテーブルでデータの整合性をチェックするにはどうすればよいですか?挿入を許可する別の値のクロスリファレンステーブルの値
私は2つのSQLテーブルを持っています。
人テーブルで一つ
CREATE TABLE PERSON
(
ID INT IDENTITY(10000,1) NOT NULL,
Firstname VARCHAR(15),
Lastname VARCHAR(25) NOT NULL,
Birthdate DATE,
Gender VARCHAR(1),
CHECK (GENDER IN ('M', 'F')),
Street VARCHAR(50),
City VARCHAR(15),
State VARCHAR(2),
CHECK (State IN ('FL','GA','PA')),
Zip INT,
Phone VARCHAR(10),
Employee VARCHAR(1),
CHECK (Employee IN('Y','N')),
Member VARCHAR(1),
CHECK (Member IN('Y','N')),
CHECK (Member IN ('Y') or Employee IN ('Y')),
CONSTRAINT PERSON_PK PRIMARY KEY (ID));
と従業員表
CREATE TABLE EMPLOYEE
(
ID INT NOT NULL,
Datehired DATE DEFAULT GETDATE(),
Status VARCHAR(1),
CHECK (Status IN ('F','C')),
Position VARCHAR(25),
EmpType VARCHAR(25),
CONSTRAINT EMPLOYEE_PK PRIMARY KEY (ID),
CONSTRAINT EMPLOYEE_PERSON_FK FOREIGN KEY (ID) REFERENCES PERSON);
のは、誰かが従業員ではないとしましょう。それでも私はそれらをEmployee Tableに挿入することができます。
INSERT INTO EMPLOYEE
(ID, Status, Position, EmpType)
VALUES
('10000','C','Teaching Classes','Instructor');
どうすればこのようなことが起こらないようにしますか?
ねえ、私はあなたが言ったことをしようと、それは従業員が「FOREIGN KEY制約」での使用のために無効であるテーブルで私に メッセージ1764、レベル16、状態1、行313 計算列「従業員」を、このエラーが発生しましたそれは永続しないからです。 メッセージ1750、レベル16、状態0、行313 制約またはインデックスを作成できませんでした。以前のエラーを参照してください。 – Kruise