mysql 创建主键,修改主键


//添加一个字段pid并且设置为主键(auto_increment)自增(auto_increment),不可为null,类型为int unsigned
alter table table1 add pid int unsigned not null auto_increment primary key;

//可以将一个主键修改为0
update table1 set pid=0 where pid=6;

假设id为主键,id可以保证字段数据唯一性,但是一张表只有一个主键。
主键的值:修改成的0,可以存在,就是排个序。
新添加的0,不允许存在,要根据行号改变。
本身存在的0,不允许存在,要从1开始递增变化。
Insert 进去 id = 0的数据,数据会从实际的行数开始增加

insert table1 (transactor,name_new,pid) values("xiaohong","hahha",0);

参考:

https://www.cnblogs.com/sun-yanglu/p/9581701.html
https://www.jianshu.com/p/e9338da60a61

原文地址:https://www.cnblogs.com/sea-stream/p/11300539.html

时间: 2024-08-30 04:26:01

mysql 创建主键,修改主键的相关文章

Mysql复制表结构、表数据以及修改主键

mysql查看表结构命令 show columns from 表名; 1.复制表结构及数据到新表 CREATE TABLE 新表SELECT * FROM 旧表 这种方法会将oldtable中所有的内容都拷贝过来,当然我们可以用delete from newtable;来删除. 不过这种方法的一个最不好的地方就是新表中没有了旧表的primary key.Extra(auto_increment)等属性.需要自己用"alter"添加,而且容易搞错.     2.只复制表结构到新表 CRE

mycat分布式mysql中间件(自增主键)

一.全局序列号 全局序列号是MyCAT提供的一个新功能,为了实现分库分表情况下,表的主键是全局唯一,而默认的MySQL的自增长主键无法满足这个要求.全局序列号的语法符合标准SQL规范,其格式为:next value for MYCATSEQ_XXXMYCATSEQ_XXX 是序列号的名字,MyCAT自动创建新的序列号,免去了开发的复杂度,另外,MyCAT也提供了一个全局的序列号,名称为:MYCATSEQ_GLOBAL 注意,MYCATSEQ_必须大写才能正确识别.MyCAT温馨提示:实践中,建议

创建和修改主键 (SQL)

添加主键, ALTER TABLE [表名:OrderInfo] Add PRIMARY KEY ([列名:ProductID, UserID...])  多个列则是组合主键 删除主键, ALTER TABLE [表名:OrderInfo] DROP PRIMARY KEY 修改主键,先执行删除 ALTER TABLE [表名:OrderInfo] DROP PRIMARY KEY 语句删除现有主键, 然后执行 ALTER TABLE [表名:OrderInfo] Add PRIMARY KEY

Mysql,SqlServer,Oracle主键自动增长的设置

1.把主键定义为自动增长标识符类型 MySql 在mysql中,如果把表的主键设为auto_increment类型,数据库就会自动为主键赋值.例如:   customers(id  auto_increment    , name (  customers(name)  id  customers; 以上sql语句先创建了customers表,然后插入两条记录,在插入时仅仅设定了name字段的值.最后查询表中id字段,查询结果为: 由此可见,一旦把id设为auto_increment类型,mys

veridata实验举例(5)修改主键上的列值,update操作会被拆分成两条语句

veridata实验举例(5)修改主键上的列值,update操作会被拆分成两条语句 续接"veridata实验举例(4)验证veridata查找出updata.delete操作导致的不同步现象",地址:点击打开链接 环境: Item Source System Target System Platform Red Hat Enterprise Linux Server release 5.4 Red Hat Enterprise Linux Server release 5.4 Hos

MyBatis+MySQL 返回插入记录的主键ID

今天用到了多个表之间的关系,另一个表中的一个字段要以第一个表的主键作为外键. 下面说两种方法,MyBatis+MySQL 返回插入记录的主键ID: 第一种: <insert id="insertAndGetId" useGeneratedKeys="true" keyProperty="userId" parameterType="com.chenzhou.mybatis.User"> insert into us

ODI修改主键后刷新失败解决方案

ODI增量刷新,修改主键值后,会导致刷新失败.解决办法:使用表中值固定不定的列作为增量刷新的依据列. 演示如下: 如上,源表和目标表有相同的记录.现修改源表主键信息 执行数据同步刷新后,目标表数据如下 发现,源表在update主键时,执行同步后,会向目标表新插入一条记录,原主键值记录仍保留在库中. 解决方案:从源表中找出一列(一组)固定不定的字段,目标表中以源表固定不变的字段建立主键,作为更新的依据. 如下: 源表ORDTASK2,主键为ORDNO,METHODCODE:在做数据集成时,我们认为

百万数据修改索引,百万数据修改主键

原文:百万数据修改索引,百万数据修改主键 当百万数据时,如果修改主键,那么会自动重建索引,所以操作会非常慢,经常会超时,错误提示类似: 超时时间已到.在操作完成之前超时时间已过或服务器未响应 解决方案:不要采用手动添加主键或者索引,而采用sql语句修改主键或者索引,当然很多人这个sql不会写,也不要紧,sql自带了,两步走,第一:点开表设计,添加一个索引或者主键,如图 第二:关闭后,右键,有一个生成更改脚本,如图: 点击生成,复制里面的脚本,关闭当前页面,记住,不要保存哦....然后运行这个sq

Oracle查询--增加--删除--修改主键

对Oracle表主键的操作,有四类:查询,增加,修改,删除 1.查询主键 /*查询某个表中存在的约束*/ select * from user_constraints where table_name='表名大写'; 查询结果显示约束类型,约束名称,不显示约束在哪个字段上 /*查询某个表各字段约束*/ select * from user_cons_columns where table_name='表名大写'; 查询结果显示约束名称,字段名称,不显示约束类型 /*查询某个表的主键约束*/ se