MySQL 8.0 还能为你自动创建主键?!

MySQL 8.0.31版本引入了一个参数​​sql_generate_invisible_primary_key​​​,开启这个参数,会在建表时,检查表中是否有主键,如果没有主键,则会自动创建。该参数非常实用,减少了DBA对sql语句表结构的审计。

自动创建主键

l 参数名称:​​sql_generate_invisible_primary_key​​​

l 作用范围:Global & Session

l 动态修改:Yes

l 默认值:OFF

该参数设置为ON时,sql语句create
table创建新表时,会检查表中是否包含主键,如果没有主键,则会自动创建。

如下所示:

注:隐式主键的列名只能是my_row_id

默认情况下,副本不会为任何在源上创建时没有主键的复制表生成主键。 在 MySQL 8.0.31 及更高版本中,您可以通过设置参数REQUIRE_TABLE_PRIMARY_KEY_CHECK = GENERATE的语句,来使副本为此类表生成不可见的主键。​​CHANGE REPLICATION SOURCE TO​​

另外,也可以通过sqlops自动审核平台,检查表结构是否包含主键。

​​https://github.com/hcymysql/sqlops​​

MySQL 8.0 还能为你自动创建主键?!

——摘自​​《MySQL运维进阶指南》​​一书扩展内容。