我有一個關於我的數據庫的問題。 我嘗試刪除我的數據庫,但我知道我們需要按特定順序清除表。級聯刪除或添加記錄(插入,更新,刪除)
我想知道如何使用我的數據庫。以何種順序在我的SQL文件中輸入我的表格。我聽說有關ON CASCADE DELETE
的事情,我不知道如何添加記錄在我的數據庫(爲了是正確的)
所以,我的問題是:如何刪除,插入,更新我的數據庫中的記錄動態(不是手動PHPMYADMIN)
我知道這是我問了很多信息。
這裏是我的代碼,以幫助:
DROP TABLE IF EXISTS Panier;
DROP TABLE IF EXISTS Materiel;
DROP TABLE IF EXISTS Medicament;
DROP TABLE IF EXISTS ListePatient;
DROP TABLE IF EXISTS Patient;
DROP TABLE IF EXISTS Specialiste;
DROP TABLE IF EXISTS TelPers;
DROP TABLE IF EXISTS Personne;
DROP TABLE IF EXISTS Produit;
DROP TABLE IF EXISTS Telephone;
DROP TABLE IF EXISTS Adresse;
CREATE TABLE Adresse(
idAdresse INT(100) NOT NULL PRIMARY KEY AUTO_INCREMENT,
num INT(5) NOT NULL,
rue VARCHAR(30) NOT NULL,
ville VARCHAR(15) NOT NULL,
postal VARCHAR(6) NOT NULL
)ENGINE=InnoDB;
CREATE TABLE Telephone(
idTel INT(100) NOT NULL PRIMARY KEY AUTO_INCREMENT,
typeTel VARCHAR(15) NOT NULL,
ind INT(3) NOT NULL,
quartier INT(3) NOT NULL,
num INT(4) NOT NULL
)ENGINE=InnoDB;
CREATE TABLE Personne(
idPersonne INT(100) PRIMARY KEY NOT NULL AUTO_INCREMENT,
nom VARCHAR(15) NOT NULL,
prenom VARCHAR(15) NOT NULL,
idTel INT(100) NOT NULL,
idAdresse INT(100) NOT NULL,
FOREIGN KEY(idAdresse) REFERENCES Adresse(idAdresse),
FOREIGN KEY(idTel) REFERENCES Telephone(idTel)
)ENGINE=InnoDB;
CREATE TABLE TelPers(
idPersonne INT(100)NOT NULL,
idTel INT(100)NOT NULL,
FOREIGN KEY(idPersonne) REFERENCES Personne(idPersonne),
FOREIGN KEY(idTel) REFERENCES Telephone(idTel)
)ENGINE=InnoDB;
CREATE TABLE Specialiste(
login VARCHAR(10) PRIMARY KEY NOT NULL,
password VARCHAR(10) NOT NULL,
profession VARCHAR(20) NOT NULL,
idListeP INT(5),
idPanier INT(5),
idPersonne INT(100),
INDEX(idListeP),
INDEX(idPanier),
FOREIGN KEY(idPersonne) REFERENCES Personne(idPersonne)
)ENGINE=InnoDB;
CREATE TABLE Patient(
idPatient INT(10) NOT NULL PRIMARY KEY AUTO_INCREMENT,
sexe CHAR NOT NULL,
anniv DATE,
assurance INT(3) NOT NULL,
idPersonne INT(100),
FOREIGN KEY(idPersonne) REFERENCES Personne(idPersonne)
)ENGINE=InnoDB;
CREATE TABLE ListePatient(
idListeP INT(5) NOT NULL,
idPatient INT(10)NOT NULL,
PRIMARY KEY (`idPatient`,`idListeP`),
FOREIGN KEY(idListeP) REFERENCES Specialiste(idListeP),
FOREIGN KEY(idPatient) REFERENCES Patient(idPatient)
)ENGINE=InnoDB;
CREATE TABLE Produit(
idProduit INT(100) NOT NULL PRIMARY KEY AUTO_INCREMENT,
nom VARCHAR(50) NOT NULL,
descr VARCHAR(255) NOT NULL,
prix DECIMAL(5,2) NOT NULL,
qte INT(100) NOT NULL
)ENGINE=InnoDB;
CREATE TABLE Medicament(
idMedic INT(100)NOT NULL PRIMARY KEY AUTO_INCREMENT,
marque VARCHAR(10) NOT NULL,
typeMed VARCHAR(10) NOT NULL,
idProduit INT(100) NOT NULL,
FOREIGN KEY(idProduit) REFERENCES Produit(idProduit)
)ENGINE=InnoDB;
CREATE TABLE Materiel(
idMateriel INT(100) NOT NULL PRIMARY KEY AUTO_INCREMENT,
rabais INT(99) NOT NULL,
idProduit INT(100) NOT NULL,
FOREIGN KEY(idProduit) REFERENCES Produit(idProduit)
)ENGINE=InnoDB;
CREATE TABLE Panier(
idPanier INT(5) NOT NULL,
idProduit INT(100) NOT NULL,
PRIMARY KEY (`idPanier`,`idProduit`),
FOREIGN KEY(idPanier) REFERENCES Specialiste(idPanier),
FOREIGN KEY(idProduit) REFERENCES Produit(idProduit)
)ENGINE=InnoDB;
如果你想更精確,我手動刪除我在我的數據庫中的所有記錄,我試圖在數據庫中重新導入這些數據(SQL文件),並拍攝了我錯誤:
-- Dumping data for table `adresse`
--
INSERT INTO `adresse` (`idAdresse` , `num` , `rue` , `ville` , `postal`)
VALUES (1, 4256, 'de la Vallee', 'Laval', 'H8A1J7') , (2, 121, 'du Coin', 'Laval', 'N6A1B8') , (3, 31, 'rue Galt', 'Montreal', 'A3B6N8') , (4, 5, 'rue du Ranch', 'Laval', 'D1C0V8') ;
MySQL said: Documentation
#1062 - Duplicate entry '1' for key 'PRIMARY'
,如果我想只刪除一條記錄(誰與外鍵鏈接到其他的相關信息)是什麼? – Hulk
@Hulk:我更新了我的答案 – Mchl
ok讓我測試.. – Hulk