整整一天,我一直在努力让这种约束继续下去。
所涉及的表格的代码是:
CREATE TABLE IF NOT EXISTS `GEBRUIKER`
(
`GEBRUIKERSNR` varchar(5) NOT NULL,
`VOORNAAM` text,
`TUSSENVOEGSEL` text,
`ACHTERNAAM` text NOT NULL,
`GESLACHT` BOOLEAN,
`WACHTWOORD` text NOT NULL,
`GEB_DATUM` DATE,
`E-MAIL` text NOT NULL,
`TELEFOON` INT(10),
`STRAAT` text,
`HUISNUMMER` INT(3),
`POSTCODE` text,
`WOONPLAATS` text,
PRIMARY KEY (`GEBRUIKERSNR`)
) ENGINE=InnoDB DEFAULT CHARSET=latin1;
--
-- Gegevens worden uitgevoerd voor tabel `GEBRUIKERS`
--
INSERT INTO `GEBRUIKER` (`GEBRUIKERSNR`, `VOORNAAM`, `TUSSENVOEGSEL`, `ACHTERNAAM`, `GESLACHT`, `WACHTWOORD`, `GEB_DATUM`, `E-MAIL`, `TELEFOON`, `STRAAT`, `HUISNUMMER`, `POSTCODE`, `WOONPLAATS`) VALUES
(99999, 'An', NULL, 'Oniem', 'm', 'anoniem', 1991-12-13, 'anoniem@anoniem.net', '0612345678', 'anoniemstraat', '01', '0001 AN', 'Anoniemville');
和
CREATE TABLE IF NOT EXISTS `AFSPRAAK`
(
`DATENUMMER` int(10) NOT NULL,
`GEBRUIKERSNR_VAN` varchar(5) NOT NULL,
`GEBRUIKERSNR_NAAR` varchar(5) NOT NULL,
`ACCEPTATIE` BOOLEAN,
`BERICHT` text,
`TIJDSTIP` DATE,
`LOCATIE` text,
PRIMARY KEY (`DATENUMMER`)
) ENGINE=InnoDB DEFAULT CHARSET=latin1;
--
-- Gegevens worden uitgevoerd voor tabel `AFSPRAAK`
--
INSERT INTO `AFSPRAAK` (`DATENUMMER`, `GEBRUIKERSNR_VAN`, `GEBRUIKERSNR_NAAR`, `ACCEPTATIE`, `BERICHT`, `TIJDSTIP`, `LOCATIE`) VALUES
('9999999999', '99999', '99999', TRUE, 'Hey, wanna go out? :)', '2014-02-27 11:04:00', 'Cafe de Bezige Bij, Hofstraat 5, Rotterdam');
我所做的约束的代码是:
ALTER TABLE `AFSPRAAK`
ADD CONSTRAINT `afspraak_ibfk_2` FOREIGN KEY (`GEBRUIKERSNR_VAN`) REFERENCES `GEBRUIKER` (`GEBRUIKERSNR`) ON DELETE NO ACTION ON UPDATE NO ACTION,
ADD CONSTRAINT `afspraak_ibfk_1` FOREIGN KEY (`GEBRUIKERSNR_NAAR`) REFERENCES `GEBRUIKER` (`GEBRUIKERSNR`) ON DELETE NO ACTION ON UPDATE NO ACTION;
从PHPMyAdmin我得到了这个:
ERROR
SQL-query:
ALTER TABLE `AFSPRAAK` ADD CONSTRAINT `afspraak_ibfk_2` FOREIGN KEY ( `GEBRUIKERSNR_VAN` ) REFERENCES `GEBRUIKER` ( `GEBRUIKERSNR` ) ON DELETE NO ACTION ON UPDATE NO ACTION ,
ADD CONSTRAINT `afspraak_ibfk_1` FOREIGN KEY ( `GEBRUIKERSNR_NAAR` ) REFERENCES `GEBRUIKER` ( `GEBRUIKERSNR` ) ON DELETE NO ACTION ON UPDATE NO ACTION ;
MySQL reports: Documentation
#1452 - Cannot add or update a child row: a foreign key constraint fails (`dateos`.`#sql-1684_68`, CONSTRAINT `afspraak_ibfk_2` FOREIGN KEY (`GEBRUIKERSNR_VAN`) REFERENCES `gebruiker` (`GEBRUIKERSNR`) ON DELETE NO ACTION ON UPDATE NO ACTION)
我现在该怎么办?另外,为什么这不起作用?
答案 0 :(得分:0)
您需要在外国 INDEX
列上创建KEY
es:
INDEX (GEBRUIKERSNR_VAN),
INDEX (GEBRUIKERSNR_NAAR)
和您的FOREIGN KEY
约束shall be created:
CREATE TABLE IF NOT EXISTS `GEBRUIKER`
(
`GEBRUIKERSNR` varchar(5) NOT NULL,
`VOORNAAM` text,
`TUSSENVOEGSEL` text,
`ACHTERNAAM` text NOT NULL,
`GESLACHT` BOOLEAN,
`WACHTWOORD` text NOT NULL,
`GEB_DATUM` DATE,
`E-MAIL` text NOT NULL,
`TELEFOON` INT(10),
`STRAAT` text,
`HUISNUMMER` INT(3),
`POSTCODE` text,
`WOONPLAATS` text,
PRIMARY KEY (`GEBRUIKERSNR`)
) ENGINE=InnoDB DEFAULT CHARSET=latin1;
CREATE TABLE IF NOT EXISTS `AFSPRAAK`
(
`DATENUMMER` int(10) NOT NULL,
`GEBRUIKERSNR_VAN` varchar(5) NOT NULL,
`GEBRUIKERSNR_NAAR` varchar(5) NOT NULL,
`ACCEPTATIE` BOOLEAN,
`BERICHT` text,
`TIJDSTIP` DATE,
`LOCATIE` text,
PRIMARY KEY (`DATENUMMER`),
INDEX (GEBRUIKERSNR_VAN),
INDEX (GEBRUIKERSNR_NAAR)
) ENGINE=InnoDB DEFAULT CHARSET=latin1;
ALTER TABLE `AFSPRAAK`
ADD CONSTRAINT `afspraak_ibfk_2`
FOREIGN KEY (`GEBRUIKERSNR_VAN`)
REFERENCES `GEBRUIKER` (`GEBRUIKERSNR`)
ON DELETE NO ACTION ON UPDATE NO ACTION,
ADD CONSTRAINT `afspraak_ibfk_1`
FOREIGN KEY (`GEBRUIKERSNR_NAAR`)
REFERENCES `GEBRUIKER` (`GEBRUIKERSNR`)
ON DELETE NO ACTION ON UPDATE NO ACTION;