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