我想记住一些sql语法,并且已经获得了ALTER TABLE ADD CONSTRAINT语法。我相信我是正确的,当我说当你使用这个语法来添加一个FOREIGN KEY或PRIMARY KEY约束时,那个sql server会自动创建索引来支持约束操作。 (这是真的......还是仅仅在PK上而不是在FK上?)当删除约束时,支持索引是否也会被删除?
如果是这样,当你使用ALTER TABLE DROP CONSTRAINT语法时......是否支持索引自动下降?这些隐式支持索引可以被明确地删除吗?如果是的话CONSTRAINT自动删除?
我只是想知道它是如何工作“下盖”。谷歌搜索没有帮助。我想我可以查询一些sys表来发现真相,但我认为我会在这里尝试。
感谢您的帮助。
赛斯
并非总是如此。如果表上已经有聚簇索引,则PRIMARY KEY约束将由唯一的非聚簇索引强制执行。 – 2010-02-18 20:28:59
在SQL Server 2008中,外键与索引有一些共同之处。我无法删除索引(并且它不是主键索引),因为如果被外键引用。 – LukLed 2010-02-18 20:32:40
@LukLed,当你使用FK强制实现一对多的父子关系时,如果你试图在父对象上删除唯一性约束,父对象需要是唯一的,它会抛出一个错误。 – 2010-02-18 20:34:50