mysql - 删除非关系配置中的记录

标签 mysql

我使用的是 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 未知。我有办法做到这一点吗?我这样做的方法正确吗?

最佳答案

您的表是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';

关于mysql - 删除非关系配置中的记录,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11903651/

相关文章:

html - “for” 子句在 XQuery 中如何工作?

mysql - MySQL 数据类型的问题

mysql - Solr 4.10.2 MySQL 导入失败并出现 java.io.EOFException

MySQL 在大型数据集上使用 IN 更新时速度缓慢

mysql - SQL查询: for each state with specific number of sailors

MySQL 和 Windows 10,我收到错误 "The server is configured with lower_case_table_names=1..."

php - 如果 IF() 函数返回 FALSE 和 END 查询,如果它在 mysql 中返回 TRUE,如何设置 WHERE 条件

mysql - 在 GROUP BY 查询中使用时如何计算 rand()

mysql - 存储过程中“字段列表”中的未知列

mysql - SQL 错误代码 1054 未知列