nomadmoon: (Default)
В голове живет какой то listening socket.
Ждет новых.
Писем, постов, комментов.
Наверное поэтому люди и придумали бога.
Чтобы как то пристроить это молчаливое ожидание.
Время от времени послать пинг туда-обратно.
Heartbeat.
nomadmoon: (Default)
Есть в 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 это стандарт, типа ГОСТа, по уму, все в ней найти должно быть просто. А на самом деле легко там не найдешь ничего, поэтому и написал этот стих я.

Profile

nomadmoon: (Default)
nomadmoon

April 2017

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

Syndicate

RSS Atom

Most Popular Tags

Style Credit

Expand Cut Tags

No cut tags
Page generated Jul. 23rd, 2017 02:48 pm
Powered by Dreamwidth Studios