Bloccare record di una tabella

giovedì 20 luglio 2006 - 20.30

bluland Profilo | Guru

salve, volevo sapere se e' possibile bloccare, quindi rendere immuni da qualsiasi modifica specifici record di una tabella allo scatenarsi di un evento ad esempio un UPDATE:

volevo sapere se questa cose e' gestibile da database invece che da apply, vedi anche
thread:
http://www.dotnethell.it/forum/messages.aspx?ThreadID=9213

saluti
ENzo

us01739 Profilo | Expert

Bisogna creare un TRIGGER associato allo statement UPDATE.
Lo puoi fare in TSQL, quindi sul database e non nell'applicazione
es:
CREATE TRIGGER customer_update
ON customer
FOR UPDATE
AS
.............


Bye Bye
---------------------------------------------------
Roberto Gelmini - Microsoft Certified Professional
www.robertogelmini.com
---------------------------------------------------

bluland Profilo | Guru

e' dopo l'AS che sorge il problema!!

us01739 Profilo | Expert

Esempio:

CREATE TRIGGER customer_update
ON customer
FOR UPDATE
AS
DECLARE @LastName NVARCHAR(20)
SELECT @LastName = LastName FROM deleted
IF @LastName = "PINCOPALLINO"
BEGIN
ROLLBACK TRANSACTION
END
ELSE
BEGIN
...... update da eseguire .....
END

PS: la delete è una speciale tabella temporanea che contiene il vecchio record prima della modifica; se ti servisse, la inserted contiene invece il record dopo la modifica.

Bye Bye
---------------------------------------------------
Roberto Gelmini - Microsoft Certified Professional
www.robertogelmini.com
---------------------------------------------------

bluland Profilo | Guru

molte grazie ora mi e' piu' chiaro , ma poi una volta bloccato il record se tento di effettuare l'update del record via Apply ad esempio nel datagrid cosa succedera'??

us01739 Profilo | Expert

Attenzione!! Non vorrei averti portato sulla strada sbagliata: questo modo non "blocca" un record per evitare che accada un deadlock, ma serve per mantenere l'integrità dei dati.

Mi spiego meglio:
al "database" non importa come i dati vengono mofificati (EM,QA, applicazione, ecc..), in quanto sà che deve intervenire per bloccare qualsiasi operazione che cerca di modificare un record della tabella customer dove il valore della colonna lastname è "PINCOPALLINO"

Spero di esserti stato utilile....

PS: impostata così funziona nel caso di update e non di delete ecc...

Bye Bye
---------------------------------------------------
Roberto Gelmini - Microsoft Certified Professional
www.robertogelmini.com
---------------------------------------------------

bluland Profilo | Guru

ho capito grazie
Partecipa anche tu! Registrati!
Hai bisogno di aiuto ?
Perchè non ti registri subito?

Dopo esserti registrato potrai chiedere
aiuto sul nostro Forum oppure aiutare gli altri

Consulta le Stanze disponibili.

Registrati ora !
Copyright © dotNetHell.it 2002-2023
Running on Windows Server 2008 R2 Standard, SQL Server 2012 & ASP.NET 3.5