HELP! Dit lukt me niet en kan niet verder.
Wie kan me hiermee helpen. Ik ben pas begonnen met database en kom er hierzo niet mee uit.
De fout die sql aangeeft is CANN NOT ADD FOREIGN KEY CONTRAINT;
Quote:
CREATE TABLE IF NOT EXISTS Klant (
Naam_Klant VARCHAR(45) NULL AUTO_INCREMENT,
Adres VARCHAR(45) NOT NULL DEFAULT '',
Postcode varchar(45) NOT NULL,
Woonplaats VARCHAR(45) NOT NULL,
Telefoonnummer INT(11) NOT NULL,
PRIMARY KEY (Naam_Klant),
UNIQUE INDEX Naam_en_Adres (Naam_Klant,Adres)
) ENGINE=InnoDB DEFAULT CHARSET=utf8 COLLATE=utf8_general_ci;
CREATE TABLE IF NOT EXISTS Uitleen (
Uitleen_Id Int(11) NOT null AUTO_INCREMENT,
Naam_Klant VARCHAR(45) NULL ,
Naam_Schilderij VARCHAR(45) NOT NULL,
Uitleen_Datum DATE NOT NULL ,
Inlever_Datum DATE NOT NULL,
Waardering INT(2) NOT NULL,
PRIMARY KEY (Uitleen_Id),
CONSTRAINT FOREIGN KEY (`Naam_Klant`)
REFERENCES `Klant` (`Naam_Klant`)
ON DELETE set null
ON UPDATE cascade
) ENGINE=InnoDB DEFAULT CHARSET=utf8 COLLATE=utf8_general_ci;
Naam_Klant VARCHAR(45) NULL AUTO_INCREMENT,
Adres VARCHAR(45) NOT NULL DEFAULT '',
Postcode varchar(45) NOT NULL,
Woonplaats VARCHAR(45) NOT NULL,
Telefoonnummer INT(11) NOT NULL,
PRIMARY KEY (Naam_Klant),
UNIQUE INDEX Naam_en_Adres (Naam_Klant,Adres)
) ENGINE=InnoDB DEFAULT CHARSET=utf8 COLLATE=utf8_general_ci;
CREATE TABLE IF NOT EXISTS Uitleen (
Uitleen_Id Int(11) NOT null AUTO_INCREMENT,
Naam_Klant VARCHAR(45) NULL ,
Naam_Schilderij VARCHAR(45) NOT NULL,
Uitleen_Datum DATE NOT NULL ,
Inlever_Datum DATE NOT NULL,
Waardering INT(2) NOT NULL,
PRIMARY KEY (Uitleen_Id),
CONSTRAINT FOREIGN KEY (`Naam_Klant`)
REFERENCES `Klant` (`Naam_Klant`)
ON DELETE set null
ON UPDATE cascade
) ENGINE=InnoDB DEFAULT CHARSET=utf8 COLLATE=utf8_general_ci;
Naam_Klant VARCHAR(45) NULL AUTO_INCREMENT
hoe wil je precies gaan nummeren in een tekst veld?
Wat als je het type kolom verandert naar INTEGER(11)? (ook in die andere tabel)
NB:
het werkt heeeeel veel fijner als je kolomnamen niet volstopt met underscores en hoofdletters.
Want was het nu StraatNaam of Straat_Naam of Straatnaam?
Gewoon alles klein: straatnaam, en je hoeft het niet steeds te gokken.
(en een half uur te zoeken waarom "Naam_van_Schilderij" nu maar niet in je html geplaatst wordt..)
Toevoeging op 11/03/2015 12:30:17:
---
telefoonnummers zijn trouwens geen INT
dat zijn stukken tekst die toevallig (hoofdzakelijk) uit cijfers bestaan.
als je 0611 opslaat als int, krijg je bij het ophalen 611 terug.
Als je 045-1234567 opslaat, krijg je een foutmelding op het streepje.
als je buitenlandse nummers opslaat kun je tegen een overflow van het type int aanlopen
Toevoeging op 11/03/2015 12:32:05:
nog een edit:
UNIQUE INDEX Naam_en_Adres (Naam_Klant,Adres)
Naam_Klant is een nummer (integer, want auto increment)
daarmee is het ook nog eens uniek (eigenschap bij auto increment +primary key)
dus iets unieks +adres is altijd uniek....
http://www.phphulp.nl/php/forum/topic/ik-kom-er-niet-uit-wat-doe-ik-hier-fout/97431/last/
Deze doe ik voor de overzichtelijkheid maar dicht.