2012-08-10 28 views
0

我正在使用MySQL,它不是關係數據庫(外鍵約束),所以當我在記錄上執行刪除時,我想檢查它是否在任何其他表中使用,如果所以,不要刪除。在非關係配置中刪除記錄

我假設我將不得不對所有表執行數據庫範圍的搜索,除了它自己的表。我將整個數據庫中的每個記錄ID保持統一。

例子:

Assets 
id | date_created | type_id 

History 
asset_id | date_recorded | store_id 

我發現了一個腳本來找到所有已記錄ID表:

SELECT 
    DISTINCT TABLE_NAME, 
    TABLE_NAME.COLUMN_NAME 
FROM 
    INFORMATION_SCHEMA.COLUMNS 
WHERE 
    COLUMN_NAME IN ('desander_id') 
    AND 
    TABLE_SCHEMA='emp' 

,但我得到的TABLE_NAME.COLUMN_NAME部分錯誤的地方說COLUMN_NAME是未知的。有什麼辦法可以做到這一點?我是否以正確的方式做這件事?

回答

1

你從表中得到的是INFORMATION_SCHEMA.COLUMNS,你正在選擇在MySQL中不可能的TABLE_NAME.COLUMN_NAME。它應該像table_name.column_name。試試這個:

SELECT DISTINCT COLUMNS.TABLE_NAME, 
       COLUMNS.COLUMN_NAME 
FROM INFORMATION_SCHEMA.COLUMNS 
WHERE COLUMN_NAME IN ('desander_id') AND 
     TABLE_SCHEMA='emp';