代码之家  ›  专栏  ›  技术社区  ›  van

引用\u约束中唯一\u约束\u名称的值不正确

  •  2
  • van  · 技术社区  · 16 年前

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

    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 列是错误的,我需要它以便从引用的列中找到其他信息。基本上,对于大多数行 唯一\u约束\u名称 FK 它是其他唯一约束的名称。

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

    我的假设是,元数据不知怎么搞砸了。有没有办法重建元数据以便

    编辑-1:示例数据库结构

    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
    )
    

    成为 MY_PARENT_TABLE_PK ,但我是什么 获取是 MY_PARENT_TABLE_u_nci_ID_LongName .

    看了结构,我发现实际上有两个 UNIQUE PK 以及 我的\u父表\u nci \u ID \u LongName . 所以真正的问题应该是:

    1 回复  |  直到 16 年前
        1
  •  5
  •   Tom H zenazn    15 年前