Добро пожаловать в форум, Guest  >>   Войти | Регистрация | Поиск | Правила | В избранное | Подписаться
Все форумы / Microsoft SQL Server Новый топик    Ответить
 PK, FK для view  [new]
pkfk
Guest
можно ли получить PK, FK для таблиц, на которых построена вьюшка?
причем это view построено на других view, вложенность бывает 3-4,
т.е вьюшка смотрит на соединение вьюшек, а те, в свою очередь, смотрят на таблицы, но может и снова на вьюшки
6 июл 12, 11:11    [12827242]     Ответить | Цитировать Сообщить модератору
 Re: PK, FK для view  [new]
pkfk
Guest
попробовала хотя бы выцепить на кого ссылается вьюшка и уже проблема:
вот такое
select * 
from sys.sql_expression_dependencies
 where referenced_id = object_id('my_view');

мне возвращает NULL в referenced_database_name,
а
sp_helptext 'my_view'
показывает, что вью смотрит в соседнюю базу.
получается, надо писать обработчик результата, возвращаемогоsp_helptext,
чтобы только выцепить имя базы, куда смотрит первая вьюха?
6 июл 12, 11:28    [12827348]     Ответить | Цитировать Сообщить модератору
 Re: PK, FK для view  [new]
pkarklin
Member

Откуда: Москва (Муром)
Сообщений: 74930
Зачем Вам PK, FK для таблиц, которые используются во вьюхах?
6 июл 12, 11:30    [12827371]     Ответить | Цитировать Сообщить модератору
 Re: PK, FK для view  [new]
pkfk
Guest
pkarklin,

мне они абсолютно не нужны.
начальница написала, чтоб ей приготовила список всех таблиц с PK,FK.
и привела пример...не таблицы, а вьюхи, которая смотрит на одноименную вьюху в другой базе,
и в качестве ключей в примере взяты kлючи от той таблицы,
которая в самом низу пирамиды.
спрашивать, зачем ей это надо, это как со стенами беседовать.
6 июл 12, 11:37    [12827423]     Ответить | Цитировать Сообщить модератору
 Re: PK, FK для view  [new]
Glory
Member

Откуда:
Сообщений: 104751
pkfk
начальница написала, чтоб ей приготовила список всех таблиц с PK,FK.

И зачем вам тогда анализировать текст представлений, если нужны _все таблицы_ ?
6 июл 12, 11:39    [12827451]     Ответить | Цитировать Сообщить модератору
 Re: PK, FK для view  [new]
pkfk
Guest
в базе, про которую она написала, таблиц нет вообще, одни вьюхи.
и пример она привела с вьюхой.
не хотелось нарываться, но могу позвонить и спросить, зачем ей это надо.
6 июл 12, 11:44    [12827492]     Ответить | Цитировать Сообщить модератору
 Re: PK, FK для view  [new]
Glory
Member

Откуда:
Сообщений: 104751
pkfk
в базе, про которую она написала, таблиц нет вообще, одни вьюхи.

Ну так и напишите - в этой базе нет таблиц
Укажите имя базы, для которой нужно вывести список таблиц
6 июл 12, 11:46    [12827501]     Ответить | Цитировать Сообщить модератору
 Re: PK, FK для view  [new]
pkarklin
Member

Откуда: Москва (Муром)
Сообщений: 74930
pkfk,

Решайте задачу, и не используте чей-то способ решения.

Ограничения на таблицы здесь: INFORMATION_SCHEMA.TABLE_CONSTRAINTS
6 июл 12, 11:46    [12827507]     Ответить | Цитировать Сообщить модератору
 Re: PK, FK для view  [new]
pkfk
Guest
Glory
pkfk
в базе, про которую она написала, таблиц нет вообще, одни вьюхи.

Ну так и напишите - в этой базе нет таблиц
Укажите имя базы, для которой нужно вывести список таблиц


вот список таблиц с ключами я ей запросом напишу,
если надо, пущай запускает.
только вот когда она придет, 100% скажет, кто тут самый тупой, и для кого она указала базу и пример,
и кто это прочесть неспособен.
а еще добавит, ну подумаешь вьюхи таблицами назвала.
специально сюда вернусь и процитирую, занафига ей список этого добра для вьюх.
а писать придется все равно.
6 июл 12, 11:57    [12827611]     Ответить | Цитировать Сообщить модератору
 Re: PK, FK для view  [new]
Glory
Member

Откуда:
Сообщений: 104751
pkfk
только вот когда она придет, 100% скажет, кто тут самый тупой, и для кого она указала базу и пример,
и кто это прочесть неспособен.
а еще добавит, ну подумаешь вьюхи таблицами назвала.

Организационные вопросы не решаются программно.
6 июл 12, 12:00    [12827628]     Ответить | Цитировать Сообщить модератору
 Re: PK, FK для view  [new]
pkfk
Guest
для таблиц сделала(может кому пригодится)

with FK_cte as ( 
select  f.parent_object_id as id,
        schema_name(f.schema_id) SchemaName,
		object_name(f.parent_object_id) as TableName,
		col_name(fc.parent_object_id, fc.parent_column_id) as ColumnName,
		f.name as FK,
		schema_name(o.schema_id) ReferencedSchema,
		object_name (f.referenced_object_id) as ReferencedTable,
		col_name(fc.referenced_object_id, fc.referenced_column_id) as ReferencedColumn	
from 
          sys.foreign_keys as f
     join sys.foreign_key_columns as fc 
        on f.object_id = fc.constraint_object_id
     join sys.objects as o 
        on o.object_id = fc.referenced_object_id
)        

,PK_cte as (        
select  ic.object_id,
        object_name(ic.object_id) as TableName,
        i.name as PK,
		col_name(ic.object_id,ic.column_id) as ColumnName
from     sys.indexes as i
    join sys.index_columns as ic
       on i.object_id = ic.object_id and i.index_id = ic.index_id
where i.is_primary_key = 1
)

select schema_name(o.schema_id) as SchemaName,
       object_name(o.object_id) as TableName,
       p.PK,
       p.ColumnName,
       f.FK,
       f.ReferencedSchema,
       f.ReferencedTable,
       f.ReferencedColumn
from      sys.objects o 
     left join PK_cte p on o.object_id = p.object_id 
     left join FK_cte f on o.object_id = f.id
where type = 'U'        


теперь буду вьюхи разбирать
6 июл 12, 12:30    [12827884]     Ответить | Цитировать Сообщить модератору
 Re: PK, FK для view  [new]
pkfk
Guest
pkarklin
Ограничения на таблицы здесь: INFORMATION_SCHEMA.TABLE_CONSTRAINTS

забыла, Вам тоже спасибо, но там нет колонок, на которых построены констрейнты, а ей оно надо
6 июл 12, 12:50    [12828045]     Ответить | Цитировать Сообщить модератору
 Re: PK, FK для view  [new]
iap
Member

Откуда: Москва
Сообщений: 47145
pkfk
pkarklin
Ограничения на таблицы здесь: INFORMATION_SCHEMA.TABLE_CONSTRAINTS

забыла, Вам тоже спасибо, но там нет колонок, на которых построены констрейнты, а ей оно надо
INFORMATION_SCHEMA.KEY_COLUMN_USAGE
6 июл 12, 12:57    [12828111]     Ответить | Цитировать Сообщить модератору
 Re: PK, FK для view  [new]
pkfk
Guest
iap, тогда вот:

select t.TABLE_SCHEMA,
       t.TABLE_NAME,
       c.CONSTRAINT_TYPE,
       c.CONSTRAINT_NAME,
       c.CONSTRAINT_SCHEMA,
       u.COLUMN_NAME
from           INFORMATION_SCHEMA.TABLES t 
     left join INFORMATION_SCHEMA.TABLE_CONSTRAINTS c
		 on t.TABLE_NAME = c.TABLE_NAME and t.TABLE_SCHEMA = c.TABLE_SCHEMA
     left join INFORMATION_SCHEMA.KEY_COLUMN_USAGE u
         on c.CONSTRAINT_NAME = u.CONSTRAINT_NAME		 
where TABLE_TYPE = 'BASE TABLE'     


начальницы нет, я фигею...
в ее примере добралась до базовых таблиц, угадайте что там...
select <...> from tbl1 union all select <...> from tbl2

какой сакральный смысл может быть в PK базовых таблиц для вью,
где вообще есть строки-дупликаты ? (сразу не доперла проверить, а теперь дубли нашла)
6 июл 12, 14:20    [12828840]     Ответить | Цитировать Сообщить модератору
Все форумы / Microsoft SQL Server Ответить