[SQL]Voorkomen dat een record wordt verwijderd

Pagina: 1
Acties:

Acties:
  • 0 Henk 'm!

  • pkouwer
  • Registratie: November 2001
  • Laatst online: 13-09 21:05
Ik heb een C#-applicatie waarbij de gebruiker op goed moment in staat is om een record uit de database te verwijderen (MS-SQL 2005). In de betreffende tabel heb ik een veld standaard met de waarden allemaal op 0, behalve 1. Dit is het standaard-record.

(bijna) alle database-transacties lopen via Stored Procedures, een enkele inline-SQL daargelaten die ik in de toekomst ook nog in Sprocs onderbreng.

Nu wil graag weten wat een nette manier is om te voorkomen dat het standaard-record wordt verwijderd ? Moet ik dit in C# regelen of is het verstandig in de stored proc. onder te brengen ?

Acties:
  • 0 Henk 'm!

Verwijderd

Sowieso moet je in C# een melding naar de eindgebruiker geven waarom iets niet verwijderd mag worden. Eigenlijk moet je in je user interface er ook voor zorgen dat de mogelijkheid er niet eens is.

Daarnaast is het mooi als je in de database zelf ervoor kunt zorgen dat het niet eens kán. :)

Acties:
  • 0 Henk 'm!

  • pkouwer
  • Registratie: November 2001
  • Laatst online: 13-09 21:05
als ik die melding geef voordat ik de SQL-query uitvoer, kan ik hem net zo goed daar al blokkeren natuurlijk

Acties:
  • 0 Henk 'm!

  • MTWZZ
  • Registratie: Mei 2000
  • Laatst online: 13-08-2021

MTWZZ

One life, live it!

Wat Cheatah al zegt: de mogelijkheid om te verwijderen blokkeren in de UI.
Een tweede ding wat je kunt proberen is een INSTEAD OF delete trigger te bouwen die specifiek het verwijderen van een bepaald record blokkeerd. Via RAISERROR kun je eventueel een custom message terug pushen naar de client waar dat als SqlException opgevangen moet worden.

Nu met Land Rover Series 3 en Defender 90


Acties:
  • 0 Henk 'm!

  • curry684
  • Registratie: Juni 2000
  • Laatst online: 06-09 00:37

curry684

left part of the evil twins

Wat je wil kan sowieso met een DELETE trigger op DB-niveau, maar afgezien daarvan is het in principe de verantwoordelijkheid van de app om dit af te stoppen - formeel is het op DB-niveau namelijk wel een valid scenario.

Professionele website nodig?


Acties:
  • 0 Henk 'm!

Verwijderd

Naar mijn mening is de netste manier om de gebruiker deze optie niet te geven. De applicatie dient als controller van de data waarmee dus bepaalde actie toegestaan worden of niet.
Je zou de database, zoals voorgesteld, met triggers kunnen beveiligen maar dit alleen als extra security. Als er op gebruikers niveau al wordt gecontroleerd of de actie is toegestaan is het naar mijn mening niet meer nodig.
Pagina: 1