2009-11-13 36 views
19

索引名称在整个sql server数据库中必须是唯一的,还是只针对该表?索引名称需要在数据库中唯一吗?

例如,我的名字我的指数:IX_OrderLoadCarrierDelivery_OrderLoadID

OrderLoadCarrierDelivery表的OrderLoadID列。或者我应该只是将其命名为IX_OrderLoadID

谢谢!

回答

19

它们必须是唯一的表或它们的创建视图。

这是一个reference on msdn详细说明。

FTA:

INDEX_NAME

是索引的名称。 索引名称必须是在 表或视图内唯一,但不必是在数据库中唯一的 。索引名称 必须遵循标识符的规则。

我相信惯例是

IX_FieldName 
+0

我想你的意思是IX_TableName_FieldName。你在考虑外键关系。 – 2009-11-13 21:25:08

+0

看起来像FK公约,不是吗? – gbn 2009-11-13 21:25:18

+0

@Bob您是对的,将编辑 – Joseph 2009-11-13 21:26:02

7

没有,每个表。

也就是说,一个独特的(OBJECT_ID,名)列在SYS.INDEXES对而并非只是(名称)在sys.objects中(忽略schema_id)

我也想使用类似IX_SingleColumnIX_ParentTable。追加表不同于默认的多余或检查约束,也就是说,即每DB

+0

它确实是每张表+1。不确定所有代表和接受的答复,说明它是每个数据库。我们错过了什么吗? sysindexes表可以有多个具有相同名称的条目,前提是id(与sysobjects中的表相关)是不同的... – mjv 2009-11-13 22:14:29

+0

约束名称是唯一的[每个模式](http://msdn.microsoft.com/ en-us/library/ms174979.aspx)(搜索“constraint_name”),而不是数据库。 – 2011-11-17 23:45:08

-4

独特,具有作为一切都被存储在系统对象的名称为重点 如果使用SQL Management Studio中是独一无二的,它是IX_Table_Field语法

+1

这两种错误都是错误的。 – gbn 2009-11-13 21:28:20

相关问题