首页 > 解决方案 > 创建引用同一个表的表时使用 FROM 子句

问题描述

我正在使用 MySQL Workbench,并且我正在尝试在不使用 PRIMARY KEY 关键字的情况下创建具有主键约束的表。

create table employee
(
    e_name varchar(20),
    e_surname varchar(20),
    depart varchar(20),
    salary int,
    check (e_name is not null and 1 = (select count(*)
                                       from employee E
                                       where e_name=E.e_name and e_surname=E.e_surname))                                    
);          

此查询导致此错误:Error Code: 1146. Table 'test.employee' doesn't exist

我可以使用 FROM 来引用我正在创建的表吗?MySQL允许吗?

标签: mysqlsqlmysql-workbench

解决方案


没有不使用primary key关键字的主键约束。主键具有三个属性:

  • 它是独一无二的。
  • 它不是NULL
  • 每桌只有一个。

这是您无法保证的第三个。但是,您可以轻松地强加前两个条件:

create table employee (
    e_name varchar(20) NOT NULL UNIQUE,
    e_surname varchar(20),
    depart varchar(20),
    salary int
);   

check为此目的没有使用约束。


推荐阅读