Salve
premetto che sono nuovo sia del forum che nello studio dei DB.
Allora vorrei creare una tabella Eventi che sia relazionata a sua volta 1:n con CategorieEventi.
Inoltre ogni evento si verifica in più Edizioni 1:n.
Quindi pensavo di inserire una chiave esterna in Eventi collegata all'id di Categorie e un'altra che collega Edizioni con l'id dell'evento corrispondente.
Tradotto in DML:
codice:
CREATE TABLE IF NOT EXISTS categorieEventi (
id int(11) NOT NULL AUTO_INCREMENT,
nome varchar(30) NOT NULL,
note text,
PRIMARY KEY (id)
) ENGINE=InnoDB;
CREATE TABLE IF NOT EXISTS eventi (
id int(11) NOT NULL PRIMARY KEY AUTO_INCREMENT,
nome varchar(30) NOT NULL,
note text,
id_categoria int(11) NOT NULL,
FOREIGN KEY (id_categoria) REFERENCES categorieEventi (id)
ON DELETE SET NULL
ON UPDATE CASCADE
) ENGINE=InnoDB;
CREATE TABLE IF NOT EXISTS edizioni (
id int(11) NOT NULL AUTO_INCREMENT,
id_evento int(11) NOT NULL,
id_referente int(11) NOT NULL,
nome varchar(30) NOT NULL,
descrizione text,
note text,
luogo varchar(50) NOT NULL,
dataIn date NOT NULL,
dataOut date NOT NULL,
foto varchar(64) NOT NULL,
PRIMARY KEY (id),
FOREIGN KEY (id_referente) REFERENCES referenti (id)
ON DELETE SET NULL
ON UPDATE CASCADE,
FOREIGN KEY (id_evento) REFERENCES eventi (id)
ON DELETE SET NULL
ON UPDATE CASCADE
) ENGINE=InnoDB;
ma mi da in esecuzione :
codice:
Codice di errore 1005, stato SQL HY000: Can't create table 'my_pizzeriaelfica.eventi' (errno: 150) Linea 21, colonna 1
Codice di errore 1005, stato SQL HY000: Can't create table 'my_pizzeriaelfica.edizioni' (errno: 150) Linea 31, colonna 1
In tutta sincerità non so che sia, ho capito che è collegato alle chiavi esterne, quindi o sbaglio la sintassi proprio oppure ho fatto una cavolata e non me ne accorgo, altrimenti qualcosa che non so
.
Ringrazio in anticipo chi mi scrivesse.