sql >> Databáze >  >> RDS >> Sqlserver

Nelze provést odstranění na View SQL Server 2005

Dobře, představme si jeden případ, kdy k této chybě dojde (protože jste neukázali svou definici pohledu).

Předpokládejme, že máme pohled:

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

pokusíme se nyní:

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

dostaneme chybu, kterou jste ukázali (nebo podobnou). Takže potřebujeme spoušť:

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')

Zápis tohoto spouštěče je podstatně složitější, pokud neexistuje snadný způsob, jak korelovat řádky z deleted psuedo-table, se kterou je třeba odstranit řádky z každé základní tabulky.



  1. Odstraňte řádky tabulky zadané v textovém souboru v Postgresu

  2. Když je odeslán SIGTERM, ukončí podřízený proces připojení mysql?

  3. Jak navrhnout schéma databáze pro ukládání textu ve více jazycích?

  4. JSON vs. Serializované pole v databázi