|
|||||||
|
|
|
![]() |
|
|
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 2600 @ 3,95Ghz + Bequiet Dark Rock TF / MB Asus X470-F Gaming / RAM 2x8GB DDR4 G.Skill FlareX 3200 CL14 / VGA Sapphire RX 7900 XT Nitro+ @ 3200Mhz / SSD Samsung 970 Pro 512GB + Sandisk 240GB Plus + Sandisk 960GB Ultra II PSU Seasonic Platinum P-660 / 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: 19:12.


















