10bet网址
MySQL 8.0参考手册
相关的文档10bet官方网站 本手册下载
PDF (Ltr)- 41.6 mb
PDF (A4)- 41.7 mb
手册页(TGZ)- 262.5 kb
手册页(邮政编码)- 372.6 kb
信息(Gzip)- 4.0 mb
信息(邮政编码)- 4.0 mb
本手册摘录

17.5.1.1复制和AUTO_INCREMENT

Statement-based复制AUTO_INCREMENT,LAST_INSERT_ID (),时间戳值进行受以下异常:

  • 声明中调用触发器或导致一个更新一个函数AUTO_INCREMENT列不是复制正确使用statement-based复制。这些语句被标记为不安全。(错误# 45677)

  • 一个插入成一个表,包含一个复合主键AUTO_INCREMENT列那不是第一列的组合键不安全的statement-based日志或复制。这些语句被标记为不安全。(错误# 11754117,错误# 45670)

    这个问题不影响表使用InnoDB存储引擎,因为一个InnoDB表与一个AUTO_INCREMENT列至少需要一个键,自动递增列是唯一或最左边的列。

  • 添加一个AUTO_INCREMENT列一个表ALTER TABLE可能不会产生相同的命令行复制和来源。这是因为行编号的顺序取决于特定的存储引擎使用的表和顺序插入的行。如果有相同的顺序是很重要的来源和复制品,行之前必须命令分配一个AUTO_INCREMENT号码。假设你想添加一个AUTO_INCREMENT列一个表t1这列col1col2生成一个新表,下面的语句t2相同的t1但有一个AUTO_INCREMENT专栏:

    创建表t2和t1;ALTER TABLE t2添加id INT AUTO_INCREMENT主键;插入t2 SELECT * FROM t1 col1秩序,col2;
    重要的

    保证相同的排序源和副本,命令条款必须名字所有t1

    指令给出的局限性创建表……就像:外键的定义被忽略,数据目录索引目录表选择。如果一个表定义包括任何这些特征,创造t2使用一个创建表声明,用于创建一个是相同的t1,但附加的AUTO_INCREMENT列。

    不管方法用于创建和填充的副本AUTO_INCREMENT列,最后一步是把原始表然后重命名复制:

    t1下降;ALTER TABLE t1 t2重命名;

    另请参阅部分B.3.6.1,“ALTER TABLE问题”