mysql 新增字段并设置为主键
今天业务需求要增加一个字段,并且这个字段因为参与了group by,插入时会与其他四个主键有冲突,所以需要把该字段也设置为主键。
问题一
首先先增加了字段,这里的字段类型为decimal
ALTER TABLE 表名 ADD 字段 decimal(20,2) DEFAULT 0.00 NOT NULL;
这时表里已经存在其他四个主键
此时执行新增主键的语句会报
Multiple primary key defined
的错,这里原因是mysql不能单独定义两个主键,之前的是一个复合主键,里面包含四个字段
所以新增时只能先删掉之前的主键
ALTER TABLE 表名 drop PRIMARY KEY
之后再新增主键
ALTER TABLE 表名 ADD PRIMARY KEY(`字段1`,`字段2`,`字段3`,`字段4`,`字段5`)
此时出现了问题2
问题2
因为之前新增字段时,表里有老数据,而老数据的新加的字段的值为null,故再将新加的字段改为主键时会一直报
Invalid use of NULL value
因为之前新加字段时我并没有设置默认值,
故总体来说新加字段并在原有的基础上设置为主键就是
ALTER TABLE 表名 ADD 字段 decimal(20,2) DEFAULT 0.00 NOT NULL;
ALTER TABLE 表名 drop PRIMARY KEY
ALTER TABLE 表名 ADD PRIMARY KEY(`字段1`,`字段2`,`字段3`,`字段4`,`字段5`)