[英]Insert or Update on Table Violates Foreign Key Constraint with Postgres
我正在處理我的數據庫分配,當我嘗試在我的數據庫 (Postgres) 中插入一行時出現錯誤
CREATE TABLE IntegracaoPrecos.Loja(
id SERIAL,
nome CHAR(60) NOT NULL,
CONSTRAINT id_loja PRIMARY KEY(id)
);
CREATE TABLE IntegracaoPrecos.Empresa(
id SERIAL,
descricao_curta CHAR(60),
numero_jogos INT,
website CHAR(60),
CONSTRAINT id_empresa PRIMARY KEY(id)
);
CREATE TABLE IntegracaoPrecos.Jogo(
id SERIAL,
nome CHAR(60) NOT NULL,
genero CHAR(60),
linguagens_suportadas CHAR(60),
suporte_a_controle BOOLEAN,
nome_empresa CHAR(60),
gratuito BOOLEAN,
idade_requerida INT,
descricao_curta CHAR(60),
descricao_longa CHAR(500),
id_empresa INT,
CONSTRAINT id_jogo PRIMARY KEY(id),
CONSTRAINT fk_nome_empresa FOREIGN KEY(id_empresa)
REFERENCES IntegracaoPrecos.Empresa(id)
);
CREATE TABLE IntegracaoPrecos.LojaJogos(
id_loja INT,
id_jogo INT,
preco_jogo NUMERIC(6, 2),
loja_crawl CHAR(10),
data_crawl DATE,
CONSTRAINT pk_loja_jogos PRIMARY KEY(id_loja, id_jogo, data_crawl),
CONSTRAINT fk_id_loja FOREIGN KEY(id_loja)
REFERENCES IntegracaoPrecos.Loja(id),
CONSTRAINT fk_id_jogo FOREIGN KEY(id_jogo)
REFERENCES IntegracaoPrecos.Jogo(id)
);
我要插入的行是:
INSERT INTO lojajogos (id_loja, id_jogo, preco_jogo, loja_crawl)
VALUES (1, 2, 30, 'Steam');
有概念錯誤嗎? 我怎樣才能正確插入這一行?
在您的LojaJogos
表中,您有兩個外鍵約束。 這意味着,在您嘗試為 id_loja 插入值1
和為id_loja
插入值2
id_jogo
,您必須已經在相應的表中具有具有此類 ID 的記錄。
這就是外鍵約束的真正意義所在——它們保護您免於在引用表中插入無效 ID。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.