4

2 つのテーブルを作成しようとすると、エラーが発生します。多値の依存関係があったため、テーブルを分離して次のように考えました。

CREATE TABLE NAME (
NameID      Integer             NOT NULL AUTO_INCREMENT,
Name        varChar(255)        NOT NULL,
CONSTRAINT  NAME_PK             PRIMARY KEY(NameID)
);

CREATE TABLE PHONE (
NameID      Integer             NOT NULL,
PhoneNumber varChar(15)         NOT NULL,
NumType     varChar(5)          NOT NULL,
CONSTRAINT  PHONE_FK            FOREIGN KEY(NameID)
    REFERENCES NAME(NameID),
CONSTRAINT  PHONE_PK            PRIMARY KEY(NameID)
);

しかし、このコードで値を追加しようとすると:

INSERT INTO NAME (NameID, Name) VALUES (default, 'John Doe');
INSERT INTO PHONE (NameID, PhoneNumber, NumType) VALUES (default, '706-782-4719', 'Home');

悪名高い 1452 エラーが表示されます。

Error Code: 1452. Cannot add or update a child row: a foreign key constraint fails (`phone_mcneill`.`PHONE`, CONSTRAINT `PHONE_FK` FOREIGN KEY (`NameID`) REFERENCES `NAME` (`NameID`))

最初のテーブルに NameID の自動インクリメントがあるため、これが何を意味するのか完全にはわかりません。外部キーであるだけでなく、2番目のものでauto_incrementを使用することはできませんよね?助けてくれてありがとう。

4

1 に答える 1