Sql 我无法创建简单的表

Sql 我无法创建简单的表,sql,ms-access-2007,create-table,Sql,Ms Access 2007,Create Table,我尝试编写SQL代码来创建名为“EMP_1”的表。此表是EMPLOYEE表的子集,表的结构总结如下所示。 以下是信息: 属性名称数据类型备注 EMP_NUM CHAR(3)PK EMP_LNAME VARCHAR(15)不为空 EMP_FNAME VARCHAR(15)不为空 EMP_初始字符(1) EMP_雇佣日期 作业代码字符(3)FK(来自作业表) 我的代码: CREATE TABLE EMP_1 ( EMP_NUM CHAR(3) PRIMARY KEY, EMP_LNAME

我尝试编写SQL代码来创建名为“EMP_1”的表。此表是EMPLOYEE表的子集,表的结构总结如下所示。 以下是信息:

属性名称数据类型备注
EMP_NUM CHAR(3)PK
EMP_LNAME VARCHAR(15)不为空
EMP_FNAME VARCHAR(15)不为空
EMP_初始字符(1)
EMP_雇佣日期
作业代码字符(3)FK(来自作业表)
我的代码:

CREATE TABLE EMP_1
(
EMP_NUM  CHAR(3)     PRIMARY KEY,
EMP_LNAME   VARCHAR(15)  Not Null,
EMP_FNAME    VARCHAR(15)    Not Null,
EMP_INITIAL  CHAR(1)    ,
EMP_HIREDATE    DATETIME,
JOB_CODE CHAR(3) FOREIGN KEY (JOB_CODE) REFERENCES JOB(JOB_CODE)
);

我不断收到约束错误

请确保主键和外键具有相同的数据类型

我想您可能在约束之前缺少了一个逗号。当我尝试它时,它起了作用:

CREATE TABLE EMP_1
(
  EMP_NUM CHAR(3) PRIMARY KEY,
  EMP_LNAME VARCHAR(15) Not Null,
  EMP_FNAME VARCHAR(15) Not Null,
  EMP_INITIAL CHAR(1),
  EMP_HIREDATE DATETIME,
  JOB_CODE CHAR(3), 
  CONSTRAINT FK_JOBS FOREIGN KEY (JOB_CODE) REFERENCES JOB(JOB_CODE)
);

我已经有一段时间没有使用过FK了,但我记得您可以使用:

作业代码字符(3)外键引用作业(作业代码) 这将创建一个名为JOB_CODE的FK

或: 拆分该行,以便创建字段,并根据JPW的响应分别添加约束


您的原始代码尝试结合两种方法,这将抛出您描述的错误。

您的数据库中是否有包含作业代码列的作业表?作业代码是主键吗?是的,我的作业表中有作业代码否作业代码是我的FK不是PKHow?我是这个SQL中的noob,但我的作业代码和EMP_NUM在同一类型的数据中,CHARIt说查询必须至少有一个目标字段。可能需要将数据库设置为SQL92模式,在菜单“工具>选项”/“表或查询”中,检查“语法是否与SQL Server兼容(ANSI 92)”是为当前数据库设置的。我正在使用ms access 2007,其中是工具我使用access 2007已有很长时间了,我不确定该选项的确切位置,但它应该位于“工具”菜单中的“选项”下。在Access 2010中,它位于文件/Options/Object Designers下。@2H2H很高兴它成功了。如果您还有其他问题,请在Stack Overflow(堆栈溢出)上询问,而不是通过电子邮件,我不是个人支持服务;)