我试图记住一些sql语法,我已经得到了ALTER TABLE ADD CONSTRAINT语法.当我说使用这种语法添加FOREIGN KEY或PRIMARY KEY约束时,我相信我是正确的,sql server会自动创建索引来支持约束操作. (这是真的……还是仅在PK而不是FK?)
如果是这样,当您使用ALTER TABLE DROP CONSTRAINT语法时…支持索引是否也会自动删除?可以明确删除这些隐式支持索引吗?如果是这样,CONSTRAINT会自动删除吗?
我只是想知道它是如何工作的“幕后”.谷歌搜索没有帮助.我想我可以查询一些sys表来发现真相,但我想我会在这里试试.
谢谢你的帮助.
赛斯
解决方法
添加主键时,实际上会添加唯一索引.添加是否导致新索引被群集取决于您是否指定它是非群集的.如果在添加主键约束时,您没有指定它是聚簇约束还是非聚簇约束,则如果表上尚不存在聚簇约束或索引,则它将被聚类,否则它将是非聚簇的.
添加外键时,不会自动创建索引.
删除约束时,将删除由于创建约束而创建的任何索引.但是,如果您尝试删除唯一或主键约束并且有引用它的外键约束,则会出现错误.
使用DROP INDEX无法删除由于创建约束而创建的索引.