nomadmoon: (Default)
[personal profile] nomadmoon
Есть в SQL такая тема, называется information schema. Если нужно узнать какие в таблице поля, там, ключи, то говорят в information schema ищи. Все это, ребята, круто конечно, но вот нужно мне было узнать какие в таблице ключи внешние. Пишу SELECT * FROM INFORMATION_SCHEMA.REFERENTIAL_CONSTRAINTS, но вот фигня - на какие поля/таблицы ссылается ключ нифига не понять.

Придумал в общем запрос, но он большой шо капец, вот такая байда:

SELECT FK.TABLE_NAME, CU.COLUMN_NAME, PK.TABLE_NAME, PT.COLUMN_NAME, C.CONSTRAINT_NAME
FROM
INFORMATION_SCHEMA.REFERENTIAL_CONSTRAINTS C
INNER JOIN INFORMATION_SCHEMA.TABLE_CONSTRAINTS FK ON C.CONSTRAINT_NAME = FK.CONSTRAINT_NAME
INNER JOIN INFORMATION_SCHEMA.TABLE_CONSTRAINTS PK ON C.UNIQUE_CONSTRAINT_NAME = PK.CONSTRAINT_NAME
INNER JOIN INFORMATION_SCHEMA.KEY_COLUMN_USAGE CU ON C.CONSTRAINT_NAME = CU.CONSTRAINT_NAME
INNER JOIN
(
SELECT i1.TABLE_NAME, i2.COLUMN_NAME
FROM
INFORMATION_SCHEMA.TABLE_CONSTRAINTS i1
INNER JOIN INFORMATION_SCHEMA.KEY_COLUMN_USAGE i2 ON i1.CONSTRAINT_NAME = i2.CONSTRAINT_NAME
WHERE i1.CONSTRAINT_TYPE = 'PRIMARY KEY'
) PT
ON PT.TABLE_NAME = PK.TABLE_NAME
WHERE FK.table_name = 'my_tablename'


Не, ну нормально, да? А ведь information schema это стандарт, типа ГОСТа, по уму, все в ней найти должно быть просто. А на самом деле легко там не найдешь ничего, поэтому и написал этот стих я.
This account has disabled anonymous posting.
If you don't have an account you can create one now.
HTML doesn't work in the subject.
More info about formatting

Profile

nomadmoon: (Default)
nomadmoon

April 2017

S M T W T F S
      1
2345678
9101112131415
16171819202122
23242526272829
30      

Most Popular Tags

Style Credit

Expand Cut Tags

No cut tags
Page generated Jun. 21st, 2025 01:19 pm
Powered by Dreamwidth Studios