我正在尝试创建一个基本的外部约束,但是我遇到了语法错误。 #1005 - Can't create table 'my_database'.'#sql-334f_952bc' (errno: 150 "Foreign key constraint is incorrectly formed")
我首先创建表,然后使用'alter table'方法创建外部约束。
创建表格:
CREATE TABLE `tbl_flights` (
`flight_id` int(11) NOT NULL AUTO_INCREMENT
`aircraft_id` int(11) NOT NULL
`date` date NOT NULL
`auth_by` varchar(255) NOT NULL
`auth_duration` time NOT NULL
PRIMARY KEY (`flight_id`)
)
;
CREATE TABLE `tbl_aircraft` (
`aircraft_id` int(11) NOT NULL AUTO_INCREMENT
`registration` char(6) NOT NULL
`insurance` date NOT NULL
`awrc` date NOT NULL
PRIMARY KEY (`aircraft_id`)
)
;
创建外键/约束:
ALTER TABLE `tbl_aircraft`
ADD CONSTRAINT `fk_aircraft_id` FOREIGN KEY ( `aircraft_id` )
REFERENCES `my_database`.`tbl_flights` ( `aircraft_id` )
ON DELETE RESTRICT ON UPDATE CASCADE ;
如果有人能在这里发现问题我会非常感激。
答案 0 :(得分:0)
基于错误消息 可能你错过了;在声明的最后
CREATE TABLE `tbl_flights` (
`flight_id` int(11) NOT NULL AUTO_INCREMENT
`aircraft_id` int(11) NOT NULL
`date` date NOT NULL
`auth_by` varchar(255) NOT NULL
`auth_duration` time NOT NULL
PRIMARY KEY (`flight_id`)
)
; /* add this */
CREATE TABLE `tbl_aircraft` (
`aircraft_id` int(11) NOT NULL AUTO_INCREMENT
`registration` char(6) NOT NULL
`insurance` date NOT NULL
`awrc` date NOT NULL
PRIMARY KEY (`aircraft_id`)
)
; /* add this*/
可能是你已经倒转了表
ALTER TABLE `tbl_flights`
ADD CONSTRAINT `fk_aircraft_id` FOREIGN KEY ( `aircraft_id` )
REFERENCES `my_database`.`tbl_aircraft` ( `aircraft_id` )
ON DELETE RESTRICT ON UPDATE CASCADE ;
或者您必须在TABLE tbl_aircraft