使用mysql向表中添加外键时遇到一些问题,我在以下代码中找不到错误:
-- phpMyAdmin SQL Dump
- 版本4.1.12
- http://www.phpmyadmin.net
- 客户:localhost - Généréle:Lun 09 Novembre2015à23:43 - Version du serveur:5.5.36-MariaDB-log - Version de PHP:5.5.11
SET SQL_MODE =“NO_AUTO_VALUE_ON_ZERO”; SET time_zone =“00:00”;
- Basededonnées:morina
- 结构de la table Etat
CREATE TABLE IF NOT NOT EXISTS Etat
( idetat
mediumint(8)NOT NULL AUTO_INCREMENT, nom
varchar(255)NOT NULL,PRIMARY KEY( idetat
))ENGINE = InnoDB DEFAULT CHARSET = utf8 AUTO_INCREMENT = 1;
- 结构de la table制作
CREATE TABLE IF NOT NOT EXISTS Facture
( idfacture
mediumint(8)NOT NULL AUTO_INCREMENT, idpaiement
mediumint(8)DEFAULT NULL, montant
int(11)DEFAULT NULL, jour
datetime NOT NULL,PRIMARY KEY( idfacture
),KEY idpaiement
( idpaiement
))ENGINE = InnoDB DEFAULT CHARSET = utf8 AUTO_INCREMENT = 1;
- 结构de la table Paiement
CREATE TABLE IF NOT NOT EXISTS Paiement
( idp
mediumint(8)NOT NULL AUTO_INCREMENT, intitule
varchar(255)NOT NULL,PRIMARY KEY( idp
))ENGINE = InnoDB DEFAULT CHARSET = utf8 AUTO_INCREMENT = 1;
- 结构de la table Rangee
CREATE TABLE IF NOT NOT EXISTS Rangee
( idrangee
mediumint(8)NOT NULL AUTO_INCREMENT, zone
varchar(1)NOT NULL,PRIMARY KEY( idrangee
))ENGINE = InnoDB DEFAULT CHARSET = utf8 AUTO_INCREMENT = 1;
- 表格结构表格
CREATE TABLE IF NOT NOT EXISTS TableSalle
( idrangee
mediumint(8)NOT NULL, position
mediumint(8)NOT NULL, idetat
mediumint(8)NOT NULL,PRIMARY KEY( idrangee
, position
),KEY idetat
( idetat
))ENGINE = InnoDB DEFAULT CHARSET = UTF8;
- Contraintes pour lestablesexportsées
- Contraintes pour la table Facture
ALTER TABLE Facture
ADD CONSTRAINT Facture_ibfk_1
FOREIGN KEY( idpaiement
)REFERENCES Paiement
( idp
);
- 对冲表TableSalle
ALTER TABLE TableSalle
ADD CONSTRAINT TableSalle_ibfk_1
FOREIGN KEY( idrangee
)REFERENCES Rangee
( idrangee
),ADD CONSTRAINT TableSalle_ibfk_2
FOREIGN KEY( idetat
)REFERENCES Etat
( idetat
);
CREATE TABLE AttributionTable
(
`idrangee` mediumint(8) NOT NULL,
`position` mediumint(8) NOT NULL,
`idfacture` mediumint(8) NOT NULL,
主要关键( idrangee
, position
, idfacture
)
)ENGINE = InnoDB DEFAULT CHARSET = utf8;
- 对冲表TableSalle
ALTER TABLE AttributionTable
ADD CONSTRAINT Attribution_ibfk_1
外键( idrangee
, position
)参考 TableSalle
( idrangee
, position
),--add约束 Attribution_ibfk_2
外键( position
)参考 TableSalle
( position
),添加约束 Attribution_ibfk_3
外键( idfacture
)参考 Facture
( idfacture
) ;
感谢帮助 ! :)
1 回答
Please read documentation here