Ciao a tutti,
volevo eseguire un controllo sui dati che vengono inseriti nella tabella contratti. Ad esempio volevo controllare che non venisse creato un contratto che iniziasse con una data precedente alla nascita di un gruppo musicale:
Codice PHP:
CREATE TABLE `contratti` (
`gid` int(11) NOT NULL,
`eid` int(11) NOT NULL,
`dal` date NOT NULL,
`al` date NOT NULL,
PRIMARY KEY (`gid`,`eid`),
FOREIGN KEY (`eid`) REFERENCES `etichette` (`eid`) ON DELETE CASCADE ON UPDATE NO ACTION,
FOREIGN KEY (`gid`) REFERENCES `gruppi` (`gid`) ON DELETE CASCADE ON UPDATE NO ACTION,
CHECK( `dal` > (SELECT g.`nascita` FROM `gruppi` g WHERE g.`gid` = `gid`))
) ENGINE=InnoDB ;
Per chiarezza metto anche la tabella Gruppi
Codice PHP:
CREATE TABLE `gruppi` (
`gid` int(11) NOT NULL AUTO_INCREMENT,
`nome` varchar(30) NOT NULL,
`nascita` date default NULL,
PRIMARY KEY (`gid`)
) ENGINE=InnoDB ;
La sintassi è corretta, ossia quella del mio libro di testo, ma non capisco perchè non funzioni e mi faccia inserire ugualmente contratti con date antecedenti alla data `nascita`.
Forse c'è un errore nel confronto tra date con un semplice > o <?
Ho cercato nel forum ed ho trovato solo confronti tra date in codice php mentre il confronto lo vorrei fare sottoforma di check a monte.
Grazie a tutti in anticipo.