首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
社区首页 >问答首页 >删除primary key约束后,列将发生什么情况?

删除primary key约束后,列将发生什么情况?
EN

Stack Overflow用户
提问于 2019-06-14 11:24:26
回答 2查看 85关注 0票数 0

我说的是主键的规范化。因此,假设我的主键列是nvarchar类型,这违反了规范化规则。从所需列中移除主键约束和标识规范之后。我需要创建一个新列,它将成为该表的新主键。

我的问题是,前一个主键应该发生什么?我得到了一个听起来像这样的答案:“这个列应该成为一个语义键”,但我不能理解这个答案。

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2019-06-14 11:43:01

在设计数据库模式时使用代理主键并不少见。其思想是为每条记录提供一个唯一且永久的标识符,以便应用程序和外键可以轻松引用它。这个密钥没有任何意义。知道代理键不会给您提供有关记录内容的信息。您的应用程序的用户永远不会看到此值。

另一方面,您的记录可能具有语义主键。这是一个唯一的值,用于标识对用户有意义的数据。

例如,假设您有一个雇员表。雇主为每个员工分配一个唯一的员工ID号码。假设您将该值存储为一个字符串。对于用户来说,该值充当引用该员工的唯一标识符。同时,您的表可能有一个数值列,用作该记录的唯一标识符。

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
create table Employee ( EmployeeRecordID int identity(1,1) primary key,
EmployerAssignedID nvarchar(12),
EmployeeName nvarchar(60),
Salary money )

insert into Employee ( EmployerAssignedID, EmployeeName, Salary ) values
( '#ABC100', 'Fred', 25000.12 ),
( '#AZZ314', 'Mary', 37700.00 ),
( '#MAA719', 'Fran', 34444.04 ),
( '#MZA977', 'Mary', 36000.00 ) 

添加每条记录时,SQL Server将为每条记录生成一个从1开始的唯一EmployeeRecordID。这是代理键。在数据库和应用程序中,您可以使用此值来引用记录。

但是,当您的应用程序与用户通信时,您将使用EmployerAssignedID。这是语义主键。对于您的用户来说,使用此值来搜索特定的员工是有意义的。

票数 0
EN

Stack Overflow用户

发布于 2019-06-14 12:02:48

主键只不过是唯一的索引,不能将NULL值作为键。与任何索引一样,它可以是集群的,也可以是非集群的。

删除聚集索引会使表变成一个结构和行为发生变化的堆。删除非聚集索引只是释放其空间,并且不会影响该表以及该表上的其他索引。

因此,在删除之后,您只有一个具有唯一值的列,并且您能够将它们视为语义键,直到插入一些重复的值为止。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/56597198

复制
相关文章
数据库 SQL 约束之 PRIMARY KEY
大家好,我是阿常,上一篇阿常讲了《数据库 SQL 约束之 UNIQUE》,今天阿常和大家分享《数据库 PRIMARY KEY 约束》。
程序媛淼淼
2022/09/01
3510
数据库 SQL 约束之 PRIMARY KEY
PRIMARY KEY联合主键
②唯一性原则 即主键值必须唯一标识表中的每一行,且不能为 NULL,即表中不可能存在有相同主键值的两行数据
诡途
2022/05/09
1.9K0
[Err] 1062 – Duplicate entry ‘0’ for key ‘PRIMARY’
问题描述: sql语句执行的时候,插入语句无法正确执行 问题原因: 主键 重复 出现 0 解决方案: 将主键设置为自增
全栈程序员站长
2021/10/19
1.4K0
[Err] 1062 – Duplicate entry ‘0’ for key ‘PRIMARY’
将Excel特定某列数据删除
我们之前将表单内的某列数据分到新的excel文件里,那么如何批量将新Excel文件这一特定列进行删除呢?
繁华是客
2023/03/03
2K0
关于primary key和foreign key的问题处理(60天)
今天碰到一个问题,在drop primary key的时候,提示ORA-02273的错误。 SQL> ALTER TABLE AR1_ACCOUNT DROP PRIMARY KEY; ALTER TABLE AR1_ACCOUNT DROP PRIMARY KEY * ERROR at line 1: ORA-02273: this unique/primary key is referenced by some foreign keys 通过下面的字典表查找的关联的表 SQL> SELECT con.c
jeanron100
2018/03/14
1K0
【说站】mysql中primary key是什么
1、primary key主键约束是一个列或者列的组合,其值能唯一地标识表中的每一行。
很酷的站长
2022/11/23
1.2K0
【说站】mysql中primary key是什么
mysql主键primary key与唯一键unique key
主键 每张表中只能有一个主键 主键自动回not null 主键的设置方式是创建的时候加上:primary key 一般主键设置为自动增加,auto_increment, 设置值的时候,可以不人为设置; 如果不是自动增加,那么每次添加数据的时候,必须自己写,而且要保证唯一性; 例如: create table test4 ( id int primary key auto_increment, user_name varchar(20) ); unique key 也是
前朝楚水
2018/04/04
1.8K0
python-pandas读取excel删除列后,写入
import io import pandas as pd diyun = pd.read_excel(io = '文件路径.xlsx') diyun = diyun.drop(columns = ['Unnamed: 0','Unnamed: 1','Unnamed: 2','Unnamed: 25']) diyun.to_excel('存储位置.xlsx') print(diyun) 重点在倒数第二行的 to_excel 我是自学python 就是这么一个简单的问题,我在网上找了很多,却没有找到答案。
用户9418378
2022/01/26
3.3K0
mysql1062错误: Duplicate entry '...' for key 'PRIMARY
Duplicate entry ‘…’ for key ‘PRIMARY,即插入数据时,要插入数据的主键数据(…)已经存在,不能再重复添加了。例:Duplicate entry ‘0’ for key ‘PRIMARY是指主键为0的数据已经存在,不能再插入主键值为0的数据了。
周小董
2019/03/25
88.2K0
Failed to execute query: Duplicate entry '0' for key 'PRIMARY'
Failed to execute query: Duplicate entry '0' for key 'PRIMARY' 今天在做php登陆和登出会插入数据到log表中,,结果报错了:如下: Failed to execute query: Duplicate entry '0' for key 'PRIMARY' SQL: INSERT INTO log set LOGID = 'IN', LOG01 ='test', LOG02 ='127.0.0.1', DT999 = now() 这说明每
叉叉敌
2019/06/26
7030
mysql删除约束
发布者:全栈程序员栈长,转载请注明出处:https://javaforall.cn/152773.html原文链接:https://javaforall.cn
全栈程序员站长
2022/09/12
4.6K0
索引的基本语法
索引是排好序的数据结构!可以用在 where 条件查找的字段,和order by 排序的字段,有了索引,便可以快速地定位数据所在的物理地址并找出来。
技能锦囊
2020/05/26
5640
索引的基本语法
索引的基本语法
索引是排好序的数据结构!可以用在 where 条件查找的字段,和order by 排序的字段,有了索引,便可以快速地定位数据所在的物理地址并找出来。
技能锦囊
2020/05/29
5520
小程序删除后,会发生什么? | 小程序问答 #25
今天,知晓程序(微信号 zxcx0101)就来为你详细解释,小程序删除之后,到底会发生什么事情。
知晓君
2018/08/01
1.1K0
小程序删除后,会发生什么? | 小程序问答 #25
第04期:列 CHECK 约束
check 约束意思,就是对一列或者多列按照一定的预先设置好的规则进行过滤,条件为真,则过滤成功;条件为假,则过滤失败,返回失败代码给客户端。
爱可生开源社区
2020/05/15
6400
第04期:列 CHECK 约束
Each record in table should have a unique `key` prop,or set `rowKey` to an unique primary key.
Each record in table should have a unique `key` prop,or set `rowKey` to an unique primary key.
拿我格子衫来
2022/01/24
6650
Each record in table should have a unique `key` prop,or set `rowKey` to an unique primary key.
mysql报错:Duplicate entry 'xx' for key 'PRIMARY' 解决可行方案。
web开发时多次遇到Duplicate entry 'xx' for key 'PRIMARY' 报错,一般这种报错的原因是啥呢?
陈哈哈
2020/07/06
2.5K0
关于primary key和unique index的奇怪问题 (58天)
今天一个dba交给我一个问题,让我帮忙查一下。说有个脚本运行的时候有错,让我看看是什么原因。 脚本的思路如下: 先drop PK,FK之类的constraint. 然后把表改个名 然后重新创建一个表 然后加上PK,FK和其他的constraint 根据报错,貌似是primary key创建失败导致的。 SQL> ALTER TABLE T1 2 ADD CONSTRAINT T1_PK 3 PRIMARY KEY ( BEN)
jeanron100
2018/03/14
9160
【说站】mysql中unique和primary key的区别
1、unique约束确保列中的没有重复的值,unique和primary key约束都为一列值的唯一性提供保障。
很酷的站长
2022/11/24
7980
点击加载更多

相似问题

FireBird:组合upper和primary key约束

22

insert查询中违反primary key约束,未接触PK列

121

Liquibase索引"PRIMARY_KEY_xx“属于约束

12

为什么PRIMARY_KEY不被永久删除?

46

删除后指针本身会发生什么情况?

36
添加站长 进交流群

领取专属 10元无门槛券

AI混元助手 在线答疑

扫码加入开发者社群
关注 腾讯云开发者公众号

洞察 腾讯核心技术

剖析业界实践案例

扫码关注腾讯云开发者公众号
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档
查看详情【社区公告】 技术创作特训营有奖征文