• MySQL基础之 如何删除主键


    我们在一个表中设置了主键之后,那么如何删除主键呢?

    删除主键的语法是:

    ALTER  TABLE  TABLE_NAME  DROP  PRIMARY  KEY;

    在这里我们要考虑两种情况:

    1、可以直接使用drop删除主键的情况。

    mysql> create table test1_3(
        -> id int not null primary key,
        -> name char(10)
        -> );
    Query OK, 0 rows affected (0.01 sec)
    
    mysql> alter table test1_3 drop primary key;
    Query OK, 0 rows affected (0.02 sec)
    Records: 0  Duplicates: 0  Warnings: 0

    2、如果带有主键的列还有AUTO_INCREMENT属性,需要间接方式去掉。

    mysql> create table test1_2(
        -> id int not null  auto_increment,
        -> name char(10),-> primary key(id)
        -> );
    Query OK, 0 rows affected (0.00 sec)
    
    mysql> desc test1_2;+-------+----------+------+-----+---------+----------------+
    | Field | Type     | Null | Key | Default | Extra          |
    +-------+----------+------+-----+---------+----------------+
    | id    | int(11)  | NO   | PRI | NULL    | auto_increment |
    | name  | char(10) | YES  |     | NULL    |                |
    +-------+----------+------+-----+---------+----------------+
    2 rows in set (0.00 sec)
    
    mysql> desc test1_2;
    +-------+----------+------+-----+---------+----------------+
    | Field | Type     | Null | Key | Default | Extra          |
    +-------+----------+------+-----+---------+----------------+
    | id    | int(11)  | NO   | PRI | NULL    | auto_increment |
    | name  | char(10) | YES  |     | NULL    |                |
    +-------+----------+------+-----+---------+----------------+
    2 rows in set (0.00 sec)
    
    mysql> alter table test1_2 drop primary key;
    ERROR 1075 (42000): Incorrect table definition; there can be only one auto column and it must be defined as a key               #这说明此列是自动增长列,无法直接删除
    mysql> alter table test1_2 modify id int;
    Query OK, 0 rows affected (0.03 sec)
    Records: 0  Duplicates: 0  Warnings: 0
    
    mysql> alter table test1_2 drop primary key;
    Query OK, 0 rows affected (0.02 sec)
    Records: 0  Duplicates: 0  Warnings: 0

    所以说如果列的属性还带有AUTO_INCREMENT,那么要先将这个列的自动增长属性去掉,才可以删除主键。

  • 相关阅读:
    Chromium GN构建工具的使用
    cef 不更新编译
    Debugging SSL on Linux
    chromium url 请求流程
    mim
    qt打包发布问题 缺失qt动态库
    qmake生成pro的make总失败。但是qt creator里面是好的
    qt 与 x11 头文件同时引用
    Ubuntu16安装GTK+2.0教程
    gcc编译静态库到自己的程序 解决在不同linux下因libc版本问题而不能运行 版本兼容问题
  • 原文地址:https://www.cnblogs.com/FengGeBlog/p/9927888.html
Copyright © 2020-2023  润新知