两个相同的插入,但用于不同的表 - 一个有效,一个无效

Two identical inserts but for different tables - one works one doesn't

我有两个table;

Table一个

CREATE TABLE Player_Match_Stats_Tackles (
    Fixture       INTEGER REFERENCES Fixture (ID),
    Player        INTEGER REFERENCES Player,
    Successful    INTEGER,
    Attempted     INTEGER,
    Was_Dribbled  INTEGER,
    Clearances    INTEGER,
    Interceptions INTEGER,
    Complete      BOOLEAN DEFAULT FALSE,
    PRIMARY KEY (
        Fixture,
        Player
    )
);

和Table两个

CREATE TABLE Player_Ratings (
    Fixture  INTEGER NOT NULL
                     UNIQUE,
    Player   INTEGER,
    Rating   INTEGER,
    Source   TEXT,
    Complete BOOLEAN NOT NULL
                     DEFAULT FALSE,
    FOREIGN KEY (
        Player
    )
    REFERENCES Player
);

我有以下完美运行的代码;

INSERT OR IGNORE INTO Player_Match_Stats_Tackles (
Fixture,
Player
)
SELECT LineUp.Fixture,
LineUp.Player1
FROM LineUp
WHERE LineUp.Player1 IS NOT NULL;

INSERT OR IGNORE INTO Player_Match_Stats_Tackles (
Fixture,
Player
)
SELECT LineUp.Fixture,
LineUp.Player2
FROM LineUp
WHERE LineUp.Player2 IS NOT NULL;

;

INSERT OR IGNORE INTO Player_Match_Stats_Tackles (
Fixture,
Player
)
SELECT LineUp.Fixture,
LineUp.Player3
FROM LineUp
WHERE LineUp.Player3 IS NOT NULL;

;

INSERT OR IGNORE INTO Player_Match_Stats_Tackles (
Fixture,
Player
)
SELECT LineUp.Fixture,
LineUp.Player4
FROM LineUp
WHERE LineUp.Player4 IS NOT NULL;

;

INSERT OR IGNORE INTO Player_Match_Stats_Tackles (
Fixture,
Player
)
SELECT LineUp.Fixture,
LineUp.Player5
FROM LineUp
WHERE LineUp.Player5 IS NOT NULL;

;

INSERT OR IGNORE INTO Player_Match_Stats_Tackles (
Fixture,
Player
)
SELECT LineUp.Fixture,
LineUp.Player6
FROM LineUp
WHERE LineUp.Player6 IS NOT NULL;

;

INSERT OR IGNORE INTO Player_Match_Stats_Tackles (
Fixture,
Player
)
SELECT LineUp.Fixture,
LineUp.Player7
FROM LineUp
WHERE LineUp.Player7 IS NOT NULL;

;

INSERT OR IGNORE INTO Player_Match_Stats_Tackles (
Fixture,
Player
)
SELECT LineUp.Fixture,
LineUp.Player8
FROM LineUp
WHERE LineUp.Player8 IS NOT NULL;

;

INSERT OR IGNORE INTO Player_Match_Stats_Tackles (
Fixture,
Player
)
SELECT LineUp.Fixture,
LineUp.Player9
FROM LineUp
WHERE LineUp.Player9 IS NOT NULL;

;

INSERT OR IGNORE INTO Player_Match_Stats_Tackles (
Fixture,
Player
)
SELECT LineUp.Fixture,
LineUp.Player10
FROM LineUp
WHERE LineUp.Player10 IS NOT NULL;

;

INSERT OR IGNORE INTO Player_Match_Stats_Tackles (
Fixture,
Player
)
SELECT LineUp.Fixture,
LineUp.Player11
FROM LineUp
WHERE LineUp.Player11 IS NOT NULL;

;

INSERT OR IGNORE INTO Player_Match_Stats_Tackles (
Fixture,
Player
)
SELECT LineUp.Fixture,
LineUp.Sub1
FROM LineUp
WHERE LineUp.Sub1 IS NOT NULL;

;

INSERT OR IGNORE INTO Player_Match_Stats_Tackles (
Fixture,
Player
)
SELECT LineUp.Fixture,
LineUp.Sub2
FROM LineUp
WHERE LineUp.Sub2 IS NOT NULL;

;

INSERT OR IGNORE INTO Player_Match_Stats_Tackles (
Fixture,
Player
)
SELECT LineUp.Fixture,
LineUp.Sub3
FROM LineUp
WHERE LineUp.Sub3 IS NOT NULL;

;

INSERT OR IGNORE INTO Player_Match_Stats_Tackles (
Fixture,
Player
)
SELECT LineUp.Fixture,
LineUp.Sub4
FROM LineUp
WHERE LineUp.Sub4 IS NOT NULL;

;

INSERT OR IGNORE INTO Player_Match_Stats_Tackles (
Fixture,
Player
)
SELECT LineUp.Fixture,
LineUp.Sub5
FROM LineUp
WHERE LineUp.Sub5 IS NOT NULL;

;

INSERT OR IGNORE INTO Player_Match_Stats_Tackles (
Fixture,
Player
)
SELECT LineUp.Fixture,
LineUp.Sub6
FROM LineUp
WHERE LineUp.Sub6 IS NOT NULL;

;

INSERT OR IGNORE INTO Player_Match_Stats_Tackles (
Fixture,
Player
)
SELECT LineUp.Fixture,
LineUp.Sub7
FROM LineUp
WHERE LineUp.Sub7 IS NOT NULL;

然后我再次使用相同的代码,但使用 Player_Ratings table

INSERT OR IGNORE INTO Player_Ratings (
Fixture,
Player
)
SELECT LineUp.Fixture,
LineUp.Player1
FROM LineUp
WHERE LineUp.Player1 IS NOT NULL;

INSERT OR IGNORE INTO Player_Ratings (
Fixture,
Player
)
SELECT LineUp.Fixture,
LineUp.Player2
FROM LineUp
WHERE LineUp.Player2 IS NOT NULL;

;

INSERT OR IGNORE INTO Player_Ratings (
Fixture,
Player
)
SELECT LineUp.Fixture,
LineUp.Player3
FROM LineUp
WHERE LineUp.Player3 IS NOT NULL;

;

INSERT OR IGNORE INTO Player_Ratings (
Fixture,
Player
)
SELECT LineUp.Fixture,
LineUp.Player4
FROM LineUp
WHERE LineUp.Player4 IS NOT NULL;

;

INSERT OR IGNORE INTO Player_Ratings (
Fixture,
Player
)
SELECT LineUp.Fixture,
LineUp.Player5
FROM LineUp
WHERE LineUp.Player5 IS NOT NULL;

;

INSERT OR IGNORE INTO Player_Ratings (
Fixture,
Player
)
SELECT LineUp.Fixture,
LineUp.Player6
FROM LineUp
WHERE LineUp.Player6 IS NOT NULL;

;

INSERT OR IGNORE INTO Player_Ratings (
Fixture,
Player
)
SELECT LineUp.Fixture,
LineUp.Player7
FROM LineUp
WHERE LineUp.Player7 IS NOT NULL;

;

INSERT OR IGNORE INTO Player_Ratings (
Fixture,
Player
)
SELECT LineUp.Fixture,
LineUp.Player8
FROM LineUp
WHERE LineUp.Player8 IS NOT NULL;

;

INSERT OR IGNORE INTO Player_Ratings (
Fixture,
Player
)
SELECT LineUp.Fixture,
LineUp.Player9
FROM LineUp
WHERE LineUp.Player9 IS NOT NULL;

;

INSERT OR IGNORE INTO Player_Ratings (
Fixture,
Player
)
SELECT LineUp.Fixture,
LineUp.Player10
FROM LineUp
WHERE LineUp.Player10 IS NOT NULL;

;

INSERT OR IGNORE INTO Player_Ratings (
Fixture,
Player
)
SELECT LineUp.Fixture,
LineUp.Player11
FROM LineUp
WHERE LineUp.Player11 IS NOT NULL;

;

INSERT OR IGNORE INTO Player_Ratings (
Fixture,
Player
)
SELECT LineUp.Fixture,
LineUp.Sub1
FROM LineUp
WHERE LineUp.Sub1 IS NOT NULL;

;

INSERT OR IGNORE INTO Player_Ratings (
Fixture,
Player
)
SELECT LineUp.Fixture,
LineUp.Sub2
FROM LineUp
WHERE LineUp.Sub2 IS NOT NULL;

;

INSERT OR IGNORE INTO Player_Ratings (
Fixture,
Player
)
SELECT LineUp.Fixture,
LineUp.Sub3
FROM LineUp
WHERE LineUp.Sub3 IS NOT NULL;

;

INSERT OR IGNORE INTO Player_Ratings (
Fixture,
Player
)
SELECT LineUp.Fixture,
LineUp.Sub4
FROM LineUp
WHERE LineUp.Sub4 IS NOT NULL;

;

INSERT OR IGNORE INTO Player_Ratings (
Fixture,
Player
)
SELECT LineUp.Fixture,
LineUp.Sub5
FROM LineUp
WHERE LineUp.Sub5 IS NOT NULL;

;

INSERT OR IGNORE INTO Player_Ratings (
Fixture,
Player
)
SELECT LineUp.Fixture,
LineUp.Sub6
FROM LineUp
WHERE LineUp.Sub6 IS NOT NULL;

;

INSERT OR IGNORE INTO Player_Ratings (
Fixture,
Player
)
SELECT LineUp.Fixture,
LineUp.Sub7
FROM LineUp
WHERE LineUp.Sub7 IS NOT NULL;

;

第二个代码在第一次插入后停止,只添加了几行(10 行,应该是 c.180)。

我做错了什么。第一个工作正常的代码也可以在其他 6 个 table 上正常工作,只需更改 table 名称即可。

我一直在搜索 google 并使用我的 SQL 书几个小时,但无法理解它。

谢谢

想通了。 Table 2 中的 Fixture 有一个唯一约束,我没有发现它应该是 Player

的复合键