当我要执行此代码时,我收到此错误消息:
您的SQL语法有错误;查看与您的MySQL服务器版本对应的手册,以便在第11行的'ADD CONSTRAINT fk_pay_grade_scale FOREIGN KEY pay_scale_id参考`pay_s'附近使用正确的语法
但我不明白这个问题 . 非常感谢您的帮助!
CREATE TABLE IF NOT EXISTS `pay_grades` (
`pay_grade_id` int(20) NOT NULL,
`pay_scale_id` tinyint(4) NOT NULL,
`name` varchar(100) NOT NULL,
`basic_salary` decimal(10,2) NOT NULL,
`status` int(2) NOT NULL DEFAULT '1',
PRIMARY KEY (`pay_grade_id`),
INDEX (`pay_scale_id`, `pay_grade_id`),
ADD CONSTRAINT `fk_pay_grade_scale` FOREIGN KEY `pay_scale_id` REFERENCES `pay_scales`(`id`) ON UPDATE CASCADE ON DELETE RESTRICT
) ENGINE=InnoDB DEFAULT CHARSET=utf8;
CREATE TABLE IF NOT EXISTS `pay_scales` (
`id` tinyint(4) NOT NULL,
`name` varchar(100) NOT NULL,
PRIMARY KEY(id)
) ENGINE=InnoDB DEFAULT CHARSET=utf8;
2 回答
它似乎是表创建顺序的差异 . 首先创建主键表而不是创建外键表 .
您不能在 CREATE TABLE 声明中使用 ADD CONSTRAINT . 在创建表之后或在 CREATE TABLE 中声明您的约束 .
First solution: Add the constraint in CREATE TABLE
Second solution: Alter table to add the constraint
创建没有约束的表,然后添加约束如下:
MySQL documentation用于外键声明 .