外键未在mysql中实现

问题描述

我正在尝试使用给定的查询创建表:

CREATE TABLE Sales_order129(
    S_order_no varchar(6) primary key check(S_order_no Like '0%'),S_order_date Date,client_no varchar(6) foreign key references client_master129(client_no),Dely_add varchar(25),Salesman_no varchar(6) foreign key references Sales_master129(Salesman_no),Dely_type char(1) check(Dely_type in('P','F')) default 'F',Billed_yn char(1),Dely_date date check(Dely_date>=S_order_date),Order_status varchar(10) check(Order_status in('in process','fulfilled','back order','cancelled'))
    );

但它显示了给定的错误

错误1064(42000):您的sql语法有错误;查看与您的MysqL服务器版本相对应的手册以获取正确的语法,以在“外键引用client_master129(client_no)附近使用”, Dely_add varchar(25), 塞勒姆在第4行

请帮助我!

解决方法

您不能为快捷键使用快捷键

CREATE TABLE Sales_order129(
     S_order_no varchar(6) primary key check(S_order_no Like '0%'),S_order_date Date,client_no varchar(6),foreign key (client_no) references client_master129(client_no),Dely_add varchar(25),Salesman_no varchar(6),foreign key (Salesman_no) references Sales_master129(Salesman_no),Dely_type char(1) check(Dely_type in('P','F')) default 'F',Billed_yn char(1),Dely_date date check(Dely_date>=S_order_date),Order_status varchar(10) check(Order_status in('in process','fulfilled','back order','cancelled'))
 );
,

默认值必须先检查

Dely_type char(1)默认'F'检查(Dely_type in('P','F')),

您不能使用fk快捷键,请参阅@nbk的答案

如果仍然有错误,请发布参考表,包括所使用的引擎。