sql >> データベース >  >> RDS >> Sqlserver

View SQL Server 2005 で削除を実行できない

    さて、このエラーが発生する 1 つのインスタンスを想像してみましょう (ビュー定義を表示していないため)。

    ビューがあるとしましょう:

    CREATE VIEW dbo.V1
    with schemabinding
    as
        select 'T1' as TabName,T1ID as ID,ImportantDate from dbo.T1
        union all
        select 'T2',T2ID,ImportantDate from dbo.T2
    

    DELETE from dbo.V1 where ImportantDate < DATEADD(day,-90,CURRENT_TIMESTAMP)
    

    あなたが示した(または同様の)エラーが表示されます。必要なのはトリガーです:

    CREATE TRIGGER T_V1_D
    on dbo.V1
    instead of delete
    as
        set nocount on
        delete from dbo.T1 where T1ID in (select ID from deleted where TabName = 'T1')
        delete from dbo.T2 where T2ID in (select ID from deleted where TabName = 'T2')
    

    deleted から行を関連付ける簡単な方法がない場合、このトリガーの記述はかなり複雑になります。 各ベーステーブルから行を削除する必要がある疑似テーブル。



    1. SQLDDLステートメントの既存のテーブルから列名をフィルタリングします

    2. 行を返さないSELECTsqlステートメントのExecuteNonQuery

    3. sqlalchemyのポイントタイプ?

    4. あなたがしたいことを知っている:OracleからMariaDBに移行する