我想提取表的主键列的名称,如果它也是来自两个表的信息模式的外键:
Student
std_id std_name
和
PHDstudent
std_id reaserchfield
PHDstudent 中的 std_id 是主键和外键同时引用学生表。
我想提取表的主键列的名称,如果它也是来自两个表的信息模式的外键:
Student
std_id std_name
和
PHDstudent
std_id reaserchfield
PHDstudent 中的 std_id 是主键和外键同时引用学生表。
运行此查询
SELECT Tab.TABLE_NAME, Col.Column_Name from
INFORMATION_SCHEMA.TABLE_CONSTRAINTS Tab,
INFORMATION_SCHEMA.CONSTRAINT_COLUMN_USAGE Col
WHERE
Col.Constraint_Name = Tab.Constraint_Name
AND Col.Table_Name = Tab.Table_Name
AND Constraint_Type = 'PRIMARY KEY '
INTERSECT
SELECT Tab.TABLE_NAME, Col.Column_Name from
INFORMATION_SCHEMA.TABLE_CONSTRAINTS Tab,
INFORMATION_SCHEMA.CONSTRAINT_COLUMN_USAGE Col
WHERE
Col.Constraint_Name = Tab.Constraint_Name
AND Col.Table_Name = Tab.Table_Name
AND Constraint_Type = 'FOREIGN KEY '
SELECT s.std_id FROM Student s
INNER JOIN PHDstudent p
ON s.std_id = p.std_id
我认为您是在询问主键列名称,而不是您应该使用下面的查询来为您提供主键列名称.....
SELECT column_name
FROM INFORMATION_SCHEMA.KEY_COLUMN_USAGE
WHERE OBJECTPROPERTY(OBJECT_ID(constraint_name), 'IsPrimaryKey') = 1
AND table_name = 'PHDstudent'