数据库表中的主键能不能修改?

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了数据库表中的主键能不能修改?相关的知识,希望对你有一定的参考价值。

可以修改,可以一般不会去修改。因为主键是数据表中的唯一标识符,不是所有的字段都可以用来当主键的。所以一般不会去修改它。一般的方法是先删除主键约束,然后再重新添加。alter table 表名 drop constraint 主键名修改主键:alter table 表名 add constraint 主键名 primary key (column1,column2,....,column) 参考技术A 可以啊,但是主键必须唯一,不能和其他的一样 参考技术B

简单的答案:可以

复杂点的答案:

一般来说,数据库并不强制要求每张表都必须有主键(至少我用过的mysql,DB2在创建表的时候都不要求必须指定主键)。主键的作用其实就是为了用某一列或者某几列的字段唯一确定表中的某条数据,类似于用身份证号来唯一确定某个人一样。

因为主键的作用只是用来唯一标识某条数据,那么主键自然是可以改的——只要修改后的值不与其它数据的主键重复就行了。

最后说明一下,某一列或者几列被设定为主键或者联合主键,对这一列或者几列的值只有唯二的要求:

    值不能为null

    值不能重复

除了这2个要求之外,主键列跟其他列的要求是一样的,没有任何区别

做java项目时的主键和外键是啥啊?

首先要知道一个概念:主键和外键,是针对数据库而言的,只有数据库中的表才有主键外键之说。
主键就是一个表中的唯一索引,用于确定一个表中的一条记录,而外键是引用另外一个表中的主键,在当前表中不见得是唯一的,但是在被引用的表中一般是唯一的。
例如:表1:用户编号(主键),用户名称 ,部门编号(外键)
表2:部门编号(主键),部门名称
那么:对于表1来说,用户编号是主键,部门编号是外键,因为部门编号是引用表2的部门编号字段。
希望搞清楚一些基本概念。
参考技术A 只有数据库才有主键和外键
主键就是能够唯一确定数据表的字段
外键是和其他表有联系的字段
目前多使用虚拟外键(方便)
参考技术B 从应用程序开发的角度来讲主键和外键基本说的都是数据库操作。主键是指标识某个表中唯一的一条记录行的列,这个列中填写的值不允许有重复值,实际上主键就代表唯一对象的含义。对于外键来将是指实现关系型数据库系统表之间的关联的唯一实现方式。具体来讲就是某个表可能存在和其他表的关系,如果从比较实际的角度来讲可以这样解释:
一个描述学生的表和一个学生的成绩表,它们是有必然的关系的,一个成绩必需属于某个学生,一个成绩就不可能单独存在,在对于学生表和学生成绩表就要有个描述,来讲清某条成绩记录是属于哪个学生的,要实现这个关系,在当今关系型数据库系统中唯一的方式就是在成绩表中设置一个列,这个列中的值必须是学生表的主键的值,这个描述就会说明这个条成绩是属于哪个学生的,因为对于学生表来讲,主键描述的就是学生。这个引用学生表主键值的列在学生成绩表中就被成为学生表的外键,一句话主键和外键关联实现表之间的关系描述,实现对象之间的关联关系。

以上是关于数据库表中的主键能不能修改?的主要内容,如果未能解决你的问题,请参考以下文章

在SQL SERVER 中对表不能设置主键

SQL Server:主键与外键设置与相关理解

SQL server中某个表的字段值为啥不能修改?

修改数据库中表的id

sql server的主键与外键问题

做java项目时的主键和外键是啥啊?