MYSQL 8.0.23-cloud left join on information_schema.KEY_COLUMN_USAGE 不起作用

问题描述

我将 sakila-schema.sql 导入到 MysqL 8.0.23-cloud。我正在尝试获取作为外键一部分的列的约束名称。 第二个输出行中的 requiredConstraintName 列出错了。它应该是'Primary',而是'NULL'。我用 MysqL 8.0.17 尝试了相同的查询输出正确。 有人可以帮忙解决这个问题吗?

-- Query
select * from @R_521_4045@ion_schema.KEY_COLUMN_USAGE where table_name='customer';

-- Output
CONSTRAINT_CATALOG,CONSTRAINT_SCHEMA,CONSTRAINT_NAME,TABLE_CATALOG,TABLE_SCHEMA,TABLE_NAME,COLUMN_NAME,ORDINAL_POSITION,POSITION_IN_UNIQUE_CONSTRAINT,REFERENCED_TABLE_SCHEMA,REFERENCED_TABLE_NAME,REFERENCED_COLUMN_NAME
def,sakila,PRIMARY,def,customer,customer_id,1,NULL,NULL
def,fk_customer_address,address_id,address,address_id
def,fk_customer_store,store_id,store,store_id
--------------------------------------------------------------------
-- Query
select * from @R_521_4045@ion_schema.KEY_COLUMN_USAGE where table_name='store';

-- Output
CONSTRAINT_CATALOG,idx_unique_manager,manager_staff_id,fk_store_address,fk_store_staff,staff,staff_id
--------------------------------------------------------------------
-- Problem Query
SELECT
    a.*,a_rf.constraint_name as requiredConstraintName
FROM
    @R_521_4045@ion_schema.KEY_COLUMN_USAGE a
        left JOIN
    @R_521_4045@ion_schema.KEY_COLUMN_USAGE a_rf
    ON a_rf.TABLE_SCHEMA = a.REFERENCED_TABLE_SCHEMA
        AND a_rf.TABLE_NAME = a.REFERENCED_TABLE_NAME
        AND a_rf.COLUMN_NAME = a.REFERENCED_COLUMN_NAME
where a.table_name = 'customer'
ORDER BY a.TABLE_NAME,a.CONSTRAINT_NAME,a.ORDINAL_POSITION;

-- Output
CONSTRAINT_CATALOG,REFERENCED_COLUMN_NAME,requiredConstraintName
def,PRIMARY
def,NULL
--------------------------------------------------------------------

解决方法

暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!

如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。

小编邮箱:dio#foxmail.com (将#修改为@)