2017-08-01 12 views
1

最近私は一時テーブルを調べており、テーブルの1つにそれらを適用しました。私はそれをデータベースの他のテーブルに適用する必要があるので、以下の例のようなスクリプトを実行しました。私の第二テーブルの上にそれを実行している場合しかし、私は、データベースに 「DF_ValidFrom」という名前のオブジェクトが既に存在し一時テーブルの制約

メッセージ2714、レベル16、状態5、行1を取得します。

以下の記事は、製品と場所とテーブル全体で同じ制約を使用できることを暗示しているようです。誰でも既存のテーブルを一時テーブルに変更した経験はありますか?

ALTER TABLE Product 
ADD 
    SysStartTime datetime2 (2) GENERATED ALWAYS AS ROW START HIDDEN  
     constraint DF_ValidFrom DEFAULT DATEADD(second, -1, SYSUTCDATETIME()) 
    , SysEndTime datetime2 (2) GENERATED ALWAYS AS ROW END HIDDEN  
     constraint DF_ValidTo DEFAULT '9999.12.31 23:59:59.99' 
    , PERIOD FOR SYSTEM_TIME (SysStartTime, SysEndTime); 

ALTER TABLE Product  
    SET (SYSTEM_VERSIONING = ON (HISTORY_TABLE = dbo.ProductHistory)); 

ALTER TABLE [Location] 
ADD 
    SysStartTime datetime2 (2) GENERATED ALWAYS AS ROW START HIDDEN  
     constraint DF_ValidFrom DEFAULT DATEADD(second, -1, SYSUTCDATETIME()) 
    , SysEndTime datetime2 (2) GENERATED ALWAYS AS ROW END HIDDEN  
     constraint DF_ValidTo DEFAULT '9999.12.31 23:59:59.99' 
    , PERIOD FOR SYSTEM_TIME (SysStartTime, SysEndTime); 

ALTER TABLE [Location]  
    SET (SYSTEM_VERSIONING = ON (HISTORY_TABLE = dbo.LocationHistory)); 

記事本文はこちらを任意の助けを事前に https://docs.microsoft.com/en-us/sql/relational-databases/tables/temporal-table-usage-scenarios

おかげです。

答えて

1

ません..youが同じdatabase..Theの記事では2つの制約を持つことはできませんが別々の例として、場所と従業員のテーブルを意味すると思わ

あなたはまた、制約の詳細については、この答えを探すことができます。 https://stackoverflow.com/a/1397674/2975396

私は必要な変更を行っプル要求を提出したので、これはこれ以上

0

問題にならないだろう、私も同じ問題を持って、唯一の制約によるものであることが分かりました。 一時テーブルでは、 から有効で有効な2つのカラムを追加しています。これらのテーブルを変更する際に、DF_ValidFromDF_ValidToという制約が追加されています。 スクリプトを実行したかどうかを確認するだけの場合は、 この制約を削除してalter table scriptを実行する必要があります。

0

完璧な作業のために、別の名前で制約を追加するだけです。 これは、スクリプトの実行を適切に実行するのに役立ちます。 私たちはほぼ50のテーブルのためにプロジェクトを行った。