 |










 |
|
 |
 |
 |
 |
|
 |
 |
Есть в SQL такая тема, называется information schema. Если нужно узнать какие в таблице поля, там, ключи, то говорят в information schema ищи. Все это, ребята, круто конечно, но вот нужно мне было узнать какие в таблице ключи внешние. Пишу SELECT * FROM INFORMATION_SCHEMA.REFERENTIAL_CONSTRAIN TS, но вот фигня - на какие поля/таблицы ссылается ключ нифига не понять. Придумал в общем запрос, но он большой шо капец, вот такая байда: 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 это стандарт, типа ГОСТа, по уму, все в ней найти должно быть просто. А на самом деле легко там не найдешь ничего, поэтому и написал этот стих я. Tags: сеть в тебе
|
 |
 |
 |
 |
|
 |
 |

|
 |
|
 |