pt-online-schema-change在线DDL工具可以做到DDL操作不锁表,不影响线上操作.对于线上超过100W的大表,一般情况下都用这个工具做DDL,最重要的考虑点还是“不影响线上操作” pt-online-schema-change内部操作流程 1)创新新的临时表,临时表为DDL后的目标表结构 2)在原表上创建增删改三个触发器,当原表有数据DML操作时,通过触发器同步数据到新的临时表 3)把原表的数据分批倒入到新的临时表 4)新表,老表做表名称互换操作 5)删除修改后表的触发器  …
详见:sqlserver修改主键为自增 先删除id字段, 执行下面sql即可: alter table sms_rec add id int IDENTITY (1,1) PRIMARY KEY…
添加主键, 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…
项目需求,有张表,原有三个联合主键,现在需要再加一个字段进去,而恰恰这个字段可以为空的.去数据库捞了一把,还好数据都不为空: SQL> select count(*) from t_wlf_record t where t.acceptinvitetime is null; COUNT(*) ---------- 那么我们需要先把这个字段修改为非空字段: alter table T_WLF_RECORD modify ACCEPTINVITETIME not null; 接着才能修改主键约束,约…
原文:SQL 修改主键约束 今天在学习数据库的时候遇到一个关于如何修改主键约束的问题,抄录下来以供备用. --修改主键约束用SQL --获取主键约束名字 declare @csname varchar(100) set @csname='' select @csname=name FROM sysobjects WHERE xtype='PK' AND parent_obj=object_id('表名') --删除约束 exec('alter table 表名 drop constraint '…
--SQL查找数据库中所有没有主键的数据表脚本 --运行脚本后在消息中可能会显示下面现象中的一种:--(1)数据库中所有数据表都有主键(则证明所有数据表都有主键)--(2)当前数据表[数据表名]没有主键(则可方便找到没主键的数据表) declare @TableName nvarchar(250)--游标中取出的数据表名declare @AllTableHasPrimaryKey int--是否全部都有主键set @AllTableHasPrimaryKey=1--声明读取数据库所有数据表名和编…
研发在早期的设计中,由于设计方面的问题,导致在设计表结构的时候,有个表有非空唯一索引而没有主键 在InnoDB存储引擎中,如果没有主键的情况下,有非空唯一索引的话,非空唯一索引即为主键. 那么这就会有个问题存在 应用在更新表的时候,用了 update aaaa ) ) 用了ID作为条件,修改,高事务并发下,可能会同时发生这种事务,由于id并没有任何索引,故此,表会被全锁,也就是全表.那么如何避免这个问题.我们线上的数据 暂时还不是很大,故此 drop index idx_aaa_unique o…
使用PowerDesigner创建一张表, 拷贝建表语句发现ID不是自增的, 以下是修改语句: ALTER TABLE USER_JOB_EXE_REC DROP COLUMN id; , ); 注:这只适用于刚建完表的情况,如果此时主键已经使用过了,表中存在许多数据,不能使用该方法删除主键,会导致数据丢失.(可行的方法,建一张相同的表来存储数据,在修改,插入). 打开建表语句后可见 [ID] int NOT NULL IDENTITY(1,1) , 确实是自增的.. -- ----------…
//添加一个字段pid并且设置为主键(auto_increment)自增(auto_increment),不可为null,类型为int unsigned alter table table1 add pid int unsigned not null auto_increment primary key; //可以将一个主键修改为0 ; 假设id为主键,id可以保证字段数据唯一性,但是一张表只有一个主键.主键的值:修改成的0,可以存在,就是排个序.新添加的0,不允许存在,要根据行号改变.本身存在…
先删除所有主键 alter table tableName drop primary key; 然后添加主键 alter table tableName primary key(id);//如果是联合主键,则用逗号分隔,如 (id,code,card);…