1
I created the following tables and populated in 2 (user and type);
CREATE:
CREATE TABLE utilizador(utilizador_id INT NOT NULL PRIMARY KEY AUTO_INCREMENT,username VARCHAR(100) NOT NULL, password VARCHAR(100) NOT NULL, morada VARCHAR(100) NOT NULL, email VARCHAR(100) NOT NULL, numero_cc INT NOT NULL);
CREATE TABLE produtos(id_produto INT NOT NULL PRIMARY KEY AUTO_INCREMENT,nome VARCHAR(100) NOT NULL, genero CHAR(1) NOT NULL, preco INT NOT NULL,id_tipo INT);
CREATE TABLE tipo(id_tipo INT NOT NULL PRIMARY KEY AUTO_INCREMENT,designacao VARCHAR(100) NOT NULL);
CREATE TABLE cart_produtos(id_produtos INT NOT NULL PRIMARY KEY AUTO_INCREMENT,quantidade INT,valor INT,id_cart INT);
CREATE TABLE cart_utilizador(id_cart INT NOT NULL PRIMARY KEY AUTO_INCREMENT,id_utilizador INT);
CREATE TABLE cart(id INT NOT NULL PRIMARY KEY AUTO_INCREMENT,datas DATE NOT NULL);
ALTER TABLE cart_utilizador ADD CONSTRAINT id_utilizador_fk
FOREIGN KEY (id_utilizador_fk) REFERENCES utilizador(utilizador_id);
ALTER TABLE cart_produtos ADD CONSTRAINT id_cart_fk
FOREIGN KEY (id_cart) REFERENCES cart_utilizador(id_cart);
ALTER TABLE produtos ADD CONSTRAINT id_fk
FOREIGN KEY (id_produto) REFERENCES cart_produtos(id_produtos);
ALTER TABLE cart_utilizador ADD CONSTRAINT id_cart_produtos_fk
FOREIGN KEY (id_cart) REFERENCES cart_produtos(id_produtos);
ALTER TABLE produtos ADD CONSTRAINT id_tipo_fk
FOREIGN KEY (id_tipo) REFERENCES tipo(id_tipo);
ALTER TABLE cart ADD CONSTRAINT id_cart_prime_fk
FOREIGN KEY (id) REFERENCES cart_utilizador(id_cart);
POPULATE:
INSERT INTO utilizador(username,password,morada,email,numero_cc) VALUES("ricardinho","oscarpw","Rua dos Aliados","[email protected]",123349574);
INSERT INTO utilizador(username,password,morada,email,numero_cc) VALUES("blitzo","maidpw","Rua das Carrinhas","[email protected]",139845923);
INSERT INTO utilizador(username,password,morada,email,numero_cc) VALUES("ricstu","glamorpw","Rua dos Aliados","[email protected]",188957923);
INSERT INTO utilizador(username,password,morada,email,numero_cc) VALUES("jacintosr","jckoneilpw","Avenida das Ameijoas","[email protected]",123349574);
INSERT INTO tipo(designacao) VALUES("calca");
INSERT INTO tipo(designacao) VALUES("chapeu");
INSERT INTO tipo(designacao) VALUES("camisola");
When I populate the products table with this script:
INSERT INTO produtos(nome,genero,preco,id_tipo) VALUES("calca preta com riscas","M",18,1);
I get the error (Error Code: 1452. Cannot add or update a Child Row: a Foreign key Constraint fails (loja
.produtos
, CONSTRAINT id_fk
FOREIGN KEY (id_produto
) REFERENCES cart_produtos
(id_produtos
))
)
How do I fix this?
So to solve this I have to eliminate the relationship and populate first and then make this script? @karran
– fabimetabi
what I believe you want is
ALTER TABLE cart_produtos ADD CONSTRAINT id_fk 
FOREIGN KEY (id_produtos) REFERENCES produtos(id_produto);
– karran
in which case you would have to remove the old relation and add this new one, maybe there are more problems, @fabimetabi
– karran
has reason makes more sense the relationship this way, tomorrow I will test thank you!
– fabimetabi
Thank you, if all goes well please then mark my reply as a solution
– karran