2012-08-10 41 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';