Avatar billede mads375 Juniormester
20. september 2013 - 00:16 Der er 5 kommentarer og
1 løsning

DELETE ID

Hejsa

Jeg har lavet et par tabeller for at lære at bruge primary og foreign keys. Mine tabeller ser således ud:

CREATE TABLE Persons(
P_id INT NOT NULL AUTO_INCREMENT,
lastName VARCHAR(20),
FirstName VARCHAR(20),
Address VARCHAR(20),
City VARCHAR(20)
PRIMARY KEY (P_id)
);

CREATE TABLE Orders (
O_id INT NOT NULL AUTO_INCREMENT,
OrderNo INT(5),
FOREIGN KEY (P_id) REFERENCES(P_id)
);


I må lige tage forbehold for eventuelle stavefejl her. Jeg kunne ikke finde min kode frem igen, så jeg skrev dem bare lige ind her. Men mine INSERT DATA ser sådanne ud:

http://postimg.org/image/i9d9jcniz/
og
http://postimg.org/image/fy4ru8vrp/

Det jeg nu gerne vil er at Mads som er P_id 1 skal slettes, fordi han ikke er kunde mere, og jeg vil også gerne have at alle hans ordrenumre skal slettes. Derfor prøvede jeg at skrive:

DELETE FROM shop_1.Persons WHERE lastName='Kristensen' AND FirstName='Mads';
DELETE FROM Shop_1.Persons WHERE P_id=1;

Men jeg får fejlen:

DELETE FROM shop_1.Persons WHERE lastName='Kristensen' AND FirstName='Mads'    Error Code: 1451. Cannot delete or update a parent row: a foreign key constraint fails (`shop_1`.`orders`, CONSTRAINT `orders_ibfk_1` FOREIGN KEY (`P_id`) REFERENCES `Persons` (`P_id`))

Er der en som ved hvorfor jeg ikke kan slette kunde nr.1?

Mvh Mads
Avatar billede arne_v Ekspert
20. september 2013 - 00:24 #1
Du skal slette i Orders foerst.

Eller have en ON DELETE CASACADE paa din REFERENCES.
Avatar billede mads375 Juniormester
20. september 2013 - 00:28 #2
Hej Arne.
Tak for det hurtige svar. Hvordan ændrer jeg så det nu?

ALTER TABLE shop_1.Orders(

men hvad så her?

)
Avatar billede mads375 Juniormester
20. september 2013 - 00:50 #3
ALTER TABLE shop_1.Orders
DROP CONSTRAINT P_id,
ADD CONSTRAINT P-id
  FOREIGN KEY (O_id)
  REFERENCES Persons(P_id)
  ON DELETE CASCADE

?
Avatar billede arne_v Ekspert
21. september 2013 - 17:08 #4
ser OK ud

(der er dog vist en - som skal vaere en _)
Avatar billede mads375 Juniormester
23. september 2013 - 11:12 #5
jeps virker :-) mange tak for det. Ligger du et svar Arne?

mvh Mads
Avatar billede arne_v Ekspert
23. september 2013 - 15:07 #6
svar
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
Computerworld tilbyder specialiserede kurser i database-management

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester