首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >UNIQUE_CONSTRAINT_NAME在REFERENTIAL_CONSTRAINTS中的错误值

UNIQUE_CONSTRAINT_NAME在REFERENTIAL_CONSTRAINTS中的错误值
EN

Stack Overflow用户
提问于 2010-06-09 12:59:58
回答 1查看 344关注 0票数 3

我使用INFORMATION_SCHEMA视图集列出给定表的所有FK约束,并使用以下查询:

代码语言:javascript
复制
SELECT      X.UNIQUE_CONSTRAINT_NAME,
            "C".*, "X".*
FROM        "INFORMATION_SCHEMA"."KEY_COLUMN_USAGE" AS "C"
INNER JOIN  "INFORMATION_SCHEMA"."REFERENTIAL_CONSTRAINTS" AS "X"
        ON  "C"."CONSTRAINT_NAME" = "X"."CONSTRAINT_NAME" 
        AND "C"."TABLE_NAME" = 'MY_TABLE'
        AND "C"."TABLE_SCHEMA" = 'MY_SCHEMA'

一切都运行得很好,但是对于一个特定的约束,UNIQUE_CONSTRAINT_NAME列的值是错误的,为了从引用的列中找到其他信息,我需要它。基本上,对于大多数行,UNIQUE_CONSTRAINT_NAME包含引用表中唯一约束(或PK)的名称,但对于一个特定的FK,它是其他一些唯一约束的名称。

我放弃了,重新创建了FK --没有帮助。

我的假设是元数据不知何故被搞砸了。是否有方法重建元数据,以便INFORMATION_SCHEMA视图能够实际显示正确的数据?

编辑-1:示例db结构

代码语言:javascript
复制
CREATE TABLE MY_PARENT_TABLE (
    ID      INTEGER,
    NAME    VARCHAR,
    --//...

    CONSTRAINT MY_PARENT_TABLE_PK PRIMARY KEY CLUSTERED (ID)
)

CREATE UNIQUE NONCLUSTERED INDEX MY_PARENT_TABLE_u_nci_ID_LongName ON MY_PARENT_TABLE (ID ASC) INCLUDE (SOME_OTHER_COLUMN)

CREATE TABLE MY_CHILD_TABLE (
    ID      INTEGER,
    PID     INTEGER,
    NAME    VARCHAR,

    CONSTRAINT MY_CHILD_TABLE_PK PRIMARY KEY CLUSTERED (ID)
   ,CONSTRAINT MY_CHILD_TABLE__MY_PARENT_TABLE__FK
        FOREIGN KEY (PID)
        REFERENCES MY_PARENT_TABLE (ID)
        ON UPDATE NO ACTION
        ON DELETE NO ACTION
)

我希望UNIQUE_CONSTRAINT_NAMEMY_PARENT_TABLE_PK,但我得到的是MY_PARENT_TABLE_u_nci_ID_LongName

在查看了结构之后,我发现实际上在该列上有两个UNIQUE约束-- PKMY_PARENT_TABLE_u_nci_ID_LongName。所以真正的问题应该是:为什么要使用其他的唯一索引而不是PK?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2010-06-09 15:36:49

因为在同一列上有一个PK和一个唯一约束,所以Server会选择一个来使用。我不知道它是否选择了唯一的约束,因为它更薄(即所涉及的列更少),并且可能需要更少的读取来确认匹配(?)

我在SQL中找不到任何方法来强制执行它选择的一个,除了排序您的脚本之外--使用PK创建表,创建另一个表和FK,然后如果您真的需要它,就创建唯一的约束--但真的是这样吗?

票数 5
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/3005962

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档