MySQL 8.4 Release Notes
15.1.20.3 创建表...像语句
使用CREATE TABLE ... LIKE
根据另一个表的定义创建一个空表,包括原始表中的列属性和索引:
CREATE TABLE new_tbl LIKE orig_tbl;
复制使用了原始表的同一版本存储格式。对原始表需要SELECT
权限。
LIKE
只适用于基本表,不适用于视图。
Important
在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
值应用于新表。