Importando os relacionamentos do banco para o dicionário de dados do Argow (SQL Server)

12 views
Skip to first unread message

MauroAssis

unread,
Feb 28, 2011, 2:11:59 PM2/28/11
to Argow
O Argow Studio ajuda muito com o trabalho de parametrização da
aplicação baseada em Argow. Definições de tabelas, campos e chaves
primárias são importados de forma correta. Porém falta uma feature:
importação dos relacionamentos entre as tabelas. Abaixo uma sentença
que importa do dicionário de dados do SQL Server para o do Argow os
relacionamentos diretamente para a tabela DICJOIN. Observações:

1) A sentença define todos os relacionamentos como master/detail
(ISLOOKUP = 'F'). Isso porque é impossível saber essa definição
somente pelo dicionário do banco. Vc pode alterar a sentença, mas
mesmo assim depois vai ter que percorrer os relacionamentos para
indicar os que são M/D e os que são lookups.

2) O "ORDER BY" no "pé" da sentença é opcional.

INSERT INTO
DICJOIN(TABLEMASTER,TABLEDETAIL,FIELDSMASTER,FIELDSDETAIL,ISLOOKUP,JOINTYPE,OPERATORS)
SELECT
PK_Table = PK.TABLE_NAME,
FK_Table = FK.TABLE_NAME,
PK_Column = PT.COLUMN_NAME,
FK_Column = CU.COLUMN_NAME,
'F' islookup, 'dajtInner' jointype,'=' operators
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 PK.TABLE_NAME NOT IN (SELECT TABLEMASTER FROM DICJOIN)
ORDER BY
1,2,3,4
Reply all
Reply to author
Forward
0 new messages