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 是未知的。有没有办法我可以做到这一点?我这样做对吗?

4

1 回答 1

1

您的表是INFORMATION_SCHEMA.COLUMNS并且您正在选择TABLE_NAME.COLUMN_NAME在 MySQL 中不可能的。应该是这样的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';
于 2012-08-10T14:24:22.913 回答