小记一下学习使用数据库时遇到的问题

1.建表时未设置主键约束名,此时删表主键会遇到困难,不能简单使用

ALTER TABLE NAME DROP CONSTRAINT 约束名;

而是要先找到数据表中主键的约束名,之后才可删除。


 

2.如何寻找数据表中主键的约束名

SELECT * FROM SYS.OBJECTS;

该代码可以查询数据库中的全部约束,我们可以找到自己要删除的表的主键(一般前面有PK),其type/ type_desc为PK/ PRIMARY KEY,如果以上均满足则证明主键存在。

此时我们可运用查询结果表中的parent_object_id做文章,寻找到数据表相应的object_id,这样我们就能找到主键约束名,之后便可使用1.中的语句删除主键。

SELECT NAME from SYS.OBJECTS WHERE TYPE_DESC 
='PRIMARY_KEY_CONSTRAINT' 
AND 
PARENT_OBJECT_ID 
= (SELECT OBJECT_ID
      FROM SYS.OBJECTS WITH(NOLOCK) WHERE NAME = '要删除主键的表名'

之后我们执行该语句,得到的结果便是希望删除的主键的约束名。

执行1.中语句即可。比如这样

ALTER TABLE Student DROP CONSTRAINT PK__Student__DDDF6446A60A1362;

上面那个PK_Student_xxxxxxxxxxxxxxxxxx,就是我的表的主键的约束名。

posted on 2022-03-19 16:15  YUYOS_TWED  阅读(34)  评论(0编辑  收藏  举报