1

Siebelで使用するSQLServerでトリガーを作成するためのヘルプが必要です。

  • システムフィールドROW_IDは一意である必要があります(キー)
  • フィールドINSERT_CDおよびCAMP_WAVE_IDがnullの場合、ROW_IDを生成する必要があります(以下を参照)。
  • そうでない場合は、ROW_IDをそのままにします。
  • ROW_IDは、varchar(15)のキーフィールドです。

次のステートメントは、完全なキー/行IDを生成します。

select substring(replace (CAST (newid() as varchar(36)),'-',''),1,15)

このキーを生成するためのSQLServer2005トリガーの作成についてサポートが必要です。

4

2 に答える 2

0

ROW_IDを変更しないことを強くお勧めします。別の列を使用し、独自の拡張列を追加することもできますが、ROW_IDを変更しないでください(または自分で設定しようとしないでください)。Siebelがそこに入れる値のままにしておきます。

システム列は変更しないでください(「システム」と入力し、[ツール]でチェックインし、[テーブル]> [列]で)

于 2009-09-11T03:59:16.190 に答える
0

これが私たちがそれをした一つの方法です。現在の負荷に固有のROW_IDを生成するようにOBIEEを設定します。したがって、WHERE句でレコードを更新できるようにします。

IF EXISTS (SELECT name FROM sysobjects
      WHERE name = 'S_CAMP_CON_Direct_Load_ROW_ID' AND type = 'TR')
   DROP TRIGGER S_CAMP_CON_Direct_Load_ROW_ID
GO
CREATE TRIGGER S_CAMP_CON_Direct_Load_ROW_ID
ON S_CAMP_CON FOR INSERT
AS

UPDATE S_CAMP_CON
    SET ROW_ID = (select substring(replace (CAST (newid() as varchar(36)),'-',''),1,15))
   WHERE S_CAMP_CON.ROW_ID IN
   (SELECT ROW_ID FROM inserted WHERE INSERT_CD = 'Direct Load')

ただし、部分文字列を使用しているため、ROW_IDの一意性に懸念があります。

于 2009-09-11T10:14:50.180 に答える