sql >> Databasteknik >  >> RDS >> Sqlserver

Självrefererande främmande nyckel-begränsningar och ta bort

Till skillnad från Andomar skulle jag gärna använda en trigger - men jag skulle inte ta bort begränsningskontrollen. Om du implementerar det som en instead of trigger, kan du återställa de andra raderna till null innan du utför den faktiska borttagningen:

CREATE TRIGGER T_tabData_D
on tabData
instead of delete
as
    set nocount on
    update tabData set fiData = null where fiData in (select idData from deleted)
    delete from tabData where idData in (select idData from deleted)

Det är kort, det är kortfattat, det skulle inte vara nödvändigt om SQL Server kunde hantera främmande nyckelkaskader till samma tabell (i andra RDBMS kan du kanske bara ange ON DELETE SET NULL för den främmande nyckelbegränsningen, YMMV).



  1. innehållet i förpackningsdeklarationen

  2. Returnera slutet av månaden i SQLite

  3. Få ett returvärde i C# asp.net från en lagrad procedur (syntaxproblem)

  4. T-SQL-delsträng - sista 3 tecken