创建引用相同 table 的 table 时使用 FROM 子句

Use FROM clause when creating a table that references the same table

我正在使用 MySQL Workbench 并且我正在尝试创建一个带有主键约束的 table 而不使用 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 来引用我正在创建的 table 吗?在 MySQL 中是否允许?

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

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

第三个是你不能保证的。但是,您可以轻松地施加前两个条件:

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

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