Artigo
· Set. 4 2min de leitura

Vincular tabelas programaticamente

Rubrica InterSystems FAQ

No InterSystems IRIS, você pode criar tabelas vinculadas usando comandos, ao invés de usar o caminho System Explorer > SQL > Wizard > Linked Tables do Portal de Administração:

Para criar uma tabela vinculada, use o método CreateLinkedTable da classe  %SYSTEM.SQL.Schema. Veja a documentação da classe para detalhes.

Para executar, siga os passos:

set sc = $SYSTEM.SQL.Schema.CreateLinkedTable("<dsn>","<Schema>","<Table>","<primaryKeys>","<localClass>","<localTable>","")

/// 1st argument: dsn - SQL Gateway connection name
/// 2nd argument: Schema - Source schema name
/// 3rd argument: Table - Source table name
/// 4th argument: primaryKeys - Primary key
/// 5th argument: localClass - Linked class name (e.g., User.LinkedClass)
/// 6th argument: localTable - Linked SQL table name (SqlTableName)
/// 7th argument: columnMap - Linked field information

Se você executar o código dessa maneira, a tabela vinculada será criada com o atributo ReadOnly. Se quiser removê-lo, é necessário especificá-lo no sétimo argumento, columnMap.

set columnMap("external field name") = $lb("new class property name","new sql field name","read-only(1/0)")

Nessa amostra, um columnMap é criado, definindo ReadOnly como 0 para todos os campos (colunas), e uma tabela vinculada é criada. A primaryKey é definida para herdar a primaryKey da tabela vinculada. O uso é como a seguir:

do ##class(ISC.LinkUtils).LinkTable("<dsn>","<Schema>","<Table>","<localClass>")

/// First argument: dsn - SQL Gateway connection name
/// Second argument: Schema - Link source schema name
/// Third argument: Table - Link source table name
/// Fourth argument: localClass - Link destination class name (e.g., User.LinkedClass)

Você também pode ver o exemplo usado aqui: https://github.com/Intersystems-jp/CreateLinkedTable

Discussão (0)1
Entre ou crie uma conta para continuar