(管理ポータルで行う)リンクテーブルをプログラムで行う方法
これは 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