用于CREATE TABLE ... LIKE
根据另一个表的定义创建一个空表,包括原始表中定义的任何列属性和索引:
CREATE TABLE new_tbl LIKE orig_tbl;
副本是使用与原始表相同版本的表存储格式创建的。SELECT
原始表需要
该
权限。
LIKE
仅适用于基表,不适用于视图。
您不能执行CREATE TABLE
or
CREATE TABLE ... LIKE
while
LOCK TABLES
语句生效。
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
.
在mysql
表空间、
InnoDB
系统表空间 ( innodb_system
) 或通用表空间中创建的表TABLESPACE
在表定义中包含一个属性,该属性定义表所在的表空间。由于临时回归,CREATE TABLE
... LIKE
保留TABLESPACE
属性并在定义的表空间中创建表,而不管
innodb_file_per_table
设置如何。要在基于此类表的定义创建空表时避免该TABLESPACE
属性,请改用以下语法:
CREATE TABLE new_tbl SELECT * FROM orig_tbl LIMIT 0;
CREATE TABLE
... LIKE
操作将所有
ENGINE_ATTRIBUTE
和
SECONDARY_ENGINE_ATTRIBUTE
值应用于新表。