1

さて、私はいくつかのばかげた問題で立ち往生しています。SQL Server 2012 では、都市データベースを次のように実装しようとしていCityます。オブジェクト、通りが配置されている場所を指すオブジェクト、およびStreet家が配置されている場所を指すオブジェクトがあります。CityHouseStreet

だから私が書くもの:

CREATE TABLE City
(
    CityID      INTEGER     NOT NULL,
    CityName    VARCHAR(50) NOT NULL,

    PRIMARY KEY(CityID)
)

INSERT INTO City VALUES 
    (1, 'Moscow'),
     -- Code for 2-7id's instructions is there
    (8, 'Kazan');

CREATE TABLE Street 
(
    StreetID    INTEGER     NOT NULL,
    StreetName  VARCHAR(50) NOT NULL,
    CityID      INTEGER     NOT NULL,

    FOREIGN KEY(CityID) REFERENCES City(CityID),
    PRIMARY KEY(StreetID)
)

INSERT INTO Street VALUES
        (1, 'Nation Street', 1),
         -- code for 2-19 id's insertions is there
        (20, 'Fuj Street', 8);

CREATE TABLE House 
(
    HouseID     INTEGER     NOT NULL,
    StreetID    INTEGER     NOT NULL,
    Height      INTEGER     NOT NULL,

    FOREIGN KEY (StreetID) REFERENCES Street(StreetID),
    PRIMARY KEY(HouseID)
)

INSERT INTO House VALUES 
    (1, 1, 100),
    -- ...

最初の挿入INSERT INTO HOUSE VALUESにバグがあり、コンパイラーは と にいくつかの制限の競合があるとINSERT言いFOREIGN KEYますが、彼が何について不平を言っているのかまったくわかりません。

実際にはすべてのデータがテーブルにあるのに、単純に挿入できないのはなぜですか?

この問題の解決策は何ですか?

エラーメッセージ:

INSERT ステートメントが FOREIGN KEY 制約と競合しましたデータベースで競合が発生しました...、テーブル「dbo.Street」、列「StreetID」

4

3 に答える 3

0

House テーブルに存在する StreetID が Street テーブルに含まれていないため、両方のテーブルに同じ streetId が存在するかどうかを確認してください

于 2013-09-10T06:24:21.120 に答える