2013-07-02 51 views
0

上的ColdFusion使用Hibernate ORM針對SQL Server 1110如何從名稱中識別外鍵約束?

,我發現了錯誤:

[Macromedia][SQLServer JDBC Driver][SQLServer]The ALTER TABLE statement conflicted with the FOREIGN KEY constraint "FK9E8E5409B9A80FE4". The conflict occurred in database "dbname", table "dbo.TableName", column 'TableId'.

這似乎不言自明,但我已經在SQL Server Management Studio並檢查了相關表格請不要使用該表的該ID找到外鍵約束,也不要找到任何相關的表。

有沒有找到約束的方法,例如通過查詢數據庫系統表?

更新:我一直在尋找在錯誤的系統視圖 - 看裏面dbname.sys.foreign_keys我看到一堆外鍵的,但檢查錯誤中提到的一個沒有返回。這是正確的地方嗎?

回答

2

看看在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' 
+0

謝謝,這是我後,但在錯誤的約束不包括在這些結果。 :/ –

+0

它可以(fk)由ORM創建嗎? – fnurglewitz

+0

是的,它絕對是ORM創建的,但仍應該在數據庫中?無論如何,顯然休眠確實'FK'+哈希(表)+哈希(列)來派生名稱,所以我至少通過匹配前綴來識別問題表;猜測我只需要嘗試找出ORM配置現在的情況。 –