【发布时间】:2017-01-05 20:39:57
【问题描述】:
我一直在环顾四周,我找不到在 sql 中执行此操作的正确方法,我目前的编码方式只是导致我的第三个表失败,但其余代码在第三个表之前运行良好,我只是需要第三个表来包含前两个表中的 fks
第一个表
SET FOREIGN_KEY_CHECKS = 0;
DROP TABLE IF EXISTS Customer;
CREATE TABLE Customer
(
CustomerNumber int NOT NULL,
CustomerName varchar(255),
CustomerAddress varchar(255),
CustomerPhoneNumber varchar(255),
JoinDate varchar(255),
PetName varchar(255),
PayScheme varchar(255),
PremiumPayDate varchar(255),
PRIMARY KEY (CustomerNumber, PetName)
);
第二张桌子
DROP TABLE IF EXISTS Policies;
CREATE TABLE Policies
(
PolicyID int NOT NULL,
PolicyNumber int NOT NULL,
PetType varchar(255),
CustomerNumber int NOT NULL,
PetName varchar(255),
EffectiveDate varchar(255),
PRIMARY KEY (PolicyID),
CONSTRAINT fk_CustomerNumber_PetName
FOREIGN KEY (CustomerNumber, PetName)
REFERENCES Customer(CustomerNumber, PetName)
);
第三张桌子
DROP TABLE IF EXISTS Claims;
CREATE TABLE Claims
(
ClaimsID int NOT NULL,
AmountForReimbursement varchar(255),
PolicyID int NOT NULL,
PetName varchar(255),
PRIMARY KEY (ClaimsID),
CONSTRAINT fk_PolicyID_PetName
FOREIGN KEY (PolicyID, PetName)
REFERENCES Policies(PolicyID), Customer(PetName)
);
【问题讨论】:
-
我不认为这是问题所在?我检查过,但我是 SQL 新手
-
正确的what方法? FK 表示某些列的值必须出现在其他地方,因为某些列的值是 UNIQUE NOT NULL(包括 PK)。您希望 Claims policy-petname 对也出现在 Policies 中,并且 Policies customer-petname 对出现在 Customer 中。 PS 为什么 petname 在索赔中只是相关政策中的宠物名?
标签: mysql foreign-keys relational-database primary-key