小记一下学习使用数据库时遇到的问题
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,就是我的表的主键的约束名。