MySQL 8.4 发行说明
使用 CREATE TABLE ... LIKE
基于另一个表的定义创建空表,包括原始表中定义的任何列属性和索引。
CREATE TABLE new_tbl LIKE orig_tbl;
副本使用与原始表相同的表存储格式版本创建。需要对原始表具有 SELECT
权限。
LIKE
仅适用于基本表,不适用于视图。
重要
在 LOCK TABLES
语句生效时,无法执行 CREATE TABLE
或 CREATE TABLE ... LIKE
。
CREATE TABLE ... LIKE
会执行与 CREATE TABLE
相同的检查。这意味着如果当前 SQL 模式与创建原始表时生效的模式不同,则表定义可能被认为对新模式无效,从而导致语句失败。
对于 CREATE TABLE ... LIKE
,目标表会保留来自原始表的生成列信息。
对于 CREATE TABLE ... LIKE
,目标表会保留来自原始表的表达式默认值。
对于 CREATE TABLE ... LIKE
,目标表会保留源表的 CHECK
约束,但所有约束名称都会被重新生成。
CREATE TABLE ... LIKE
不会保留为源表指定的任何 DATA DIRECTORY
或 INDEX DIRECTORY
表选项,也不会保留任何外键定义。
如果源表是 TEMPORARY
表,则 CREATE TABLE ... LIKE
不会保留 TEMPORARY
。要创建 TEMPORARY
目标表,请使用 CREATE TEMPORARY TABLE ... LIKE
。
CREATE TABLE ... LIKE
操作将所有 ENGINE_ATTRIBUTE
和 SECONDARY_ENGINE_ATTRIBUTE
值应用于新表。