thefrog
22-03-2005, 10:34
allora, devo fare un coso in sql abbastanza semplice, il codice è questo:
drop database if exists db3647299;
create database if not exists db3647299;
use db3647299;
DROP TABLE IF EXISTS Rapprensentanti;
CREATE TABLE if not exists Rappresentanti(
CodR CHAR(2) PRIMARY KEY,
cognome CHAR(10),
nome CHAR(8),
via CHAR(15),
citta CHAR(15),
prov CHAR(2),
cap CHAR(5),
TotProvv DECIMAL(5,2),
PerProvv DECIMAL(5,2)
) TYPE=INNODB;
DROP TABLE IF EXISTS Clienti;
CREATE TABLE if not exists Clienti(
CodC CHAR(3) PRIMARY KEY,
cognome CHAR(10),
nome CHAR(8),
via CHAR(15),
citta CHAR(15),
prov CHAR(2),
cap CHAR(5),
saldo DECIMAL(5,2),
fido DECIMAL(5,2),
CodR CHAR(2) NOT NULL,
INDEX RInd (CodR),
FOREIGN KEY (CodR)
REFERENCES Rappresentanti(CodR)
) TYPE=INNODB;
DROP TABLE IF EXISTS Ordini;
CREATE TABLE if not exists Ordini(
NumOrdine CHAR(6) PRIMARY KEY,
Data DATE,
CodC CHAR(3),
INDEX CliInd (CodC),
FOREIGN KEY (CodC) REFERENCES
Clienti(CodC) ON DELETE SET NULL
) TYPE=INNODB;
DROP TABLE IF EXISTS Articoli;
CREATE TABLE if not exists Articoli(
NumArt CHAR(4) PRIMARY KEY,
descrizione CHAR(20),
giacenza INT,
categoria CHAR(2),
magazzino CHAR(1),
PrzUnitario DECIMAL(5,2)
);
DROP TABLE IF EXISTS DettagliOrdini;
CREATE TABLE if not exists DettagliOrdini(
NumOrdine CHAR(6) NOT NULL,
NumArt CHAR(4) NOT NULL,
PRIMARY KEY(NumOrdine, NumArt),
INDEX Ord_ind(NumOrdine),
FOREIGN KEY(NumOrdine)
REFERENCES Ordini(NumOrdine),
INDEX Art_ind(NumArt),
FOREIGN KEY(NumArt)
REFERENCES Articoli(NumArt),
QtaOrd DECIMAL(3,0),
Prezzo DECIMAL(6,2)
) TYPE=INNODB;
mi da quest'errore:
ERROR 1005: Can't create table './db3647299/DettagliOrdini.frm' (errno: 150)
se qualcuno sa come correggerlo...grazie
drop database if exists db3647299;
create database if not exists db3647299;
use db3647299;
DROP TABLE IF EXISTS Rapprensentanti;
CREATE TABLE if not exists Rappresentanti(
CodR CHAR(2) PRIMARY KEY,
cognome CHAR(10),
nome CHAR(8),
via CHAR(15),
citta CHAR(15),
prov CHAR(2),
cap CHAR(5),
TotProvv DECIMAL(5,2),
PerProvv DECIMAL(5,2)
) TYPE=INNODB;
DROP TABLE IF EXISTS Clienti;
CREATE TABLE if not exists Clienti(
CodC CHAR(3) PRIMARY KEY,
cognome CHAR(10),
nome CHAR(8),
via CHAR(15),
citta CHAR(15),
prov CHAR(2),
cap CHAR(5),
saldo DECIMAL(5,2),
fido DECIMAL(5,2),
CodR CHAR(2) NOT NULL,
INDEX RInd (CodR),
FOREIGN KEY (CodR)
REFERENCES Rappresentanti(CodR)
) TYPE=INNODB;
DROP TABLE IF EXISTS Ordini;
CREATE TABLE if not exists Ordini(
NumOrdine CHAR(6) PRIMARY KEY,
Data DATE,
CodC CHAR(3),
INDEX CliInd (CodC),
FOREIGN KEY (CodC) REFERENCES
Clienti(CodC) ON DELETE SET NULL
) TYPE=INNODB;
DROP TABLE IF EXISTS Articoli;
CREATE TABLE if not exists Articoli(
NumArt CHAR(4) PRIMARY KEY,
descrizione CHAR(20),
giacenza INT,
categoria CHAR(2),
magazzino CHAR(1),
PrzUnitario DECIMAL(5,2)
);
DROP TABLE IF EXISTS DettagliOrdini;
CREATE TABLE if not exists DettagliOrdini(
NumOrdine CHAR(6) NOT NULL,
NumArt CHAR(4) NOT NULL,
PRIMARY KEY(NumOrdine, NumArt),
INDEX Ord_ind(NumOrdine),
FOREIGN KEY(NumOrdine)
REFERENCES Ordini(NumOrdine),
INDEX Art_ind(NumArt),
FOREIGN KEY(NumArt)
REFERENCES Articoli(NumArt),
QtaOrd DECIMAL(3,0),
Prezzo DECIMAL(6,2)
) TYPE=INNODB;
mi da quest'errore:
ERROR 1005: Can't create table './db3647299/DettagliOrdini.frm' (errno: 150)
se qualcuno sa come correggerlo...grazie