【问题标题】:How do you identify a foreign key constraint from its name?如何从名称中识别外键约束?
【发布时间】:2013-06-29 15:45:49
【问题描述】:

在 ColdFusion 10 上针对 SQL Server 11 使用 Hibernate ORM。

我收到了错误:

[Macromedia][SQLServer JDBC 驱动程序][SQLServer]ALTER TABLE 语句与 FOREIGN KEY 约束冲突 “FK9E8E5409B9A80FE4”。数据库“dbname”、表中发生冲突 "dbo.TableName",列 'TableId'。

这似乎不言自明,但我在 SQL Server Management Studio 中检查了相关表,但没有找到该表的具有该 ID 的外键约束,也没有找到任何相关表。

有没有办法定位约束,例如通过查询数据库系统表?

更新:我查看了错误的系统视图 - 查看 dbname.sys.foreign_keys 我确实看到了一堆外键,但检查了提到的那个在错误中不返回任何内容。那是合适的地方吗?

【问题讨论】:

    标签: sql-server hibernate orm coldfusion sql-server-2012


    【解决方案1】:

    看一下 sys.all_objects 视图,查询起来更方便

    select 
         sa.name as FKName
        ,so.name as TableName
    from
        sys.all_objects sa
            inner join sys.objects so on sa.parent_object_id = so.[object_id]
    where
        sa.[type] = 'F'
    

    【讨论】:

    • 谢谢,这就是我所追求的,但错误中的约束不包含在这些结果中。 ://
    • 它(fk)可以由 ORM 创建吗?
    • 是的,肯定是ORM创建的,但应该还在数据库中?无论如何,显然 hibernate 使用 'FK' + hash(table) + hash(column) 来派生名称,所以我至少通过匹配前缀确定了问题表;我想我现在只需要弄清楚 ORM 配置是怎么回事。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2019-06-10
    • 1970-01-01
    • 2017-11-06
    • 1970-01-01
    • 1970-01-01
    • 2016-08-14
    • 1970-01-01
    相关资源
    最近更新 更多