記事
Megumi Kakechi · 2022年11月22日 2m read

(管理ポータルで行う)リンクテーブルをプログラムで行う方法

これは InterSystems FAQ サイトの記事です。

InterSystems IRIS では、管理ポータルの
 [システムエクスプローラ] > [SQL] : ウィザード > リンクテーブル
で行うリンクテーブルの作成をコマンドで行うことが可能です。

リンクテーブルの作成には、%SYSTEM.SQL.Schema クラスの CreateLinkedTable メソッドを使用します。
詳細は、クラスリファレンスをご覧ください。

実行は以下のように行います。

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

/// 第1引数:dsn - SQLゲートウェイ接続名
/// 第2引数:Schema - リンク元のスキーマ名 
/// 第3引数:Table - リンク元のテーブル名 
/// 第4引数:primaryKeys - プライマリーキー
/// 第5引数:localClass - リンク先のクラス名 例:User.LinkedClass
/// 第6引数:localTable - リンク先のSQLテーブル名(SqlTableName)
/// 第7引数:columnMap - リンク先フィールド情報 


こちらで実行する場合、リンクテーブルはReadOnly属性で作成されます。
ReadOnly属性を外したい場合は、第7引数の columnMap で指定する必要があります。

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


こちら のサンプルでは、全てのフィールド(カラム)に対して ReadOnlyなし(0) を設定する columnMap を作成し、リンクテーブルを作成しています。
また、primaryKey はリンク元テーブルの primaryKey を引き継げるようにしています。

使用方法は以下のようになります。

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

/// 第1引数:dsn - SQLゲートウェイ接続名
/// 第2引数:Schema - リンク元のスキーマ名 
/// 第3引数:Table - リンク元のテーブル名 
/// 第4引数:localClass - リンク先のクラス名 例:User.LinkedClass 

 

今回使用したサンプルはこちらからもご覧いただけます。
 👉https://github.com/Intersystems-jp/CreateLinkedTable

0
0 10
ディスカッション (0)0
続けるにはログインするか新規登録を行ってください