问题描述
我将 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 (将#修改为@)