|
|||||||
|
|
|
![]() |
|
|
Strumenti |
|
|
#1 |
|
Member
Iscritto dal: Mar 2009
Città: Vicenza
Messaggi: 177
|
[MySQL] Problema foreign key
Ciao a tutti, ho bisogno di urgente aiuto, sto facendo un progetto in mysql per l'università ed ho il seguente problema:
ho 2 tabelle (Eventi e Campionati), sulla tabella eventi ho come chiave esterna la chiave primaria di campionati, il problema è che un evento può essere anche singolo quindi può non appartenere ad un campionato. Quindi ho bisogno, in certi casi, di fare a meno della chiave esterna e metterla a NULL, il problema è che quando inserisco mi da sempre l'errore: Cannot add or update a child row: a foreign key constraint fails. Come devo risolvere?? Grazie
__________________
Ho scambiato con squab96. |
|
|
|
|
|
#2 |
|
Senior Member
Iscritto dal: Nov 2004
Città: Padova
Messaggi: 2342
|
A me permette di inserire valori NULL come valore di un attributo chiave esterna... posta il codice SQL con cui hai creato le tabelle e la relazione.
__________________
CPU Ryzen 5900X @ 4,7Ghz + Thermalright Phantom Spirit 120 SE / MB Asus X470-F Gaming / RAM 2x16GB DDR4 Corsair 3600 CL16 / VGA Sapphire RX 7900 XT Nitro+ / SSD Crucial T500 1TB + Samsung 970 Pro 512GB + Sandisk 960GB Ultra II / PSU FSP Hydro G PRO 1000W / Headset Kingston HyperX Flight |
|
|
|
|
|
#3 |
|
Member
Iscritto dal: Mar 2009
Città: Vicenza
Messaggi: 177
|
Tabelle
CREATE TABLE Campionati(
IDCampionato CHAR(8) PRIMARY KEY, Nome CHAR(40) NOT NULL, Sponsor CHAR(20), Anno YEAR NOT NULL, Stato CHAR(30), Organizzatore CHAR(8), FOREIGN KEY (Organizzatore) REFERENCES Organizzatori(Id) ON DELETE SET NULL )ENGINE=InnoDB; CREATE TABLE Eventi( CodiceEvento CHAR(8) PRIMARY KEY, Nome CHAR(40) NOT NULL, Data DATE NOT NULL, Tipo ENUM ('Gara', 'Prove') NOT NULL, Circuito CHAR(8) NOT NULL, Organizzatore CHAR(8), Campionato CHAR(8), FOREIGN KEY (Circuito) REFERENCES Circuiti(CodCircuito), FOREIGN KEY (Organizzatore) REFERENCES Organizzatori(Id), CONSTRAINT camp FOREIGN KEY (Campionato) REFERENCES Campionati(IDCampionato) ON DELETE CASCADE ON UPDATE CASCADE )ENGINE=InnoDB; relazione 1:N (piu eventi per un campionato, un evento appartiene ad un solo campionato) non mi dà errore quando vado a inserirli io direttamente ma mi da errore solo quando lo faccio da una pagina php (qui sotto il codice): <?php session_start(); $username=$_SESSION['usernamed']; include "connect.php"; mysql_select_db("lceccon",$conn); $codice=$_POST['codiceevento']; $nome=$_POST['nome']; $data=$_POST['data']; $radio=$_POST['radio']; $circuito=$_POST['circuito']; $campionato=$_POST['campionato']; $organizzatore="SELECT * FROM Organizzatori o WHERE Mail='$username'"; $org=mysql_query($organizzatore,$conn) or die (mysql_error()); $row=mysql_fetch_assoc($org); $id=$row['Id']; $query="INSERT INTO `Eventi` (`CodiceEvento`, `Nome`, `Data`, `Tipo`, `Circuito`, `Organizzatore`, `Campionato`) VALUES ('$codice', '$nome', '$data', '$radio', '$circuito', '$id', '$campionato')"; $ris=mysql_query($query,$conn) or die (mysql_error()); ?>
__________________
Ho scambiato con squab96. |
|
|
|
|
| Strumenti | |
|
|
Tutti gli orari sono GMT +1. Ora sono le: 22:38.



















