TIP: Aggiornare un record di n campi con una stored procedure SENZA generare traffico inutile e ottimizzare la concorrenza dei dati.

Supponendo di avere una stored del tipo

CREATE PROCEDURE UpdateEntity (@id int, @Field_1 type, ... @Field_n  type) AS
UPDATE dbEntity SET Feld_1 @Field_1  ... Field_n = @Field_n WHERE
id=@id

Potremmo fare una seconda stored

CREATE PROCEDURE UpdateEntityNN (@id int, @Field_1 type = NULL, ... @Field_n  type = NULL) AS
UPDATE dbEntity SET Feld_1=ISNULL(@Field_1, Field_1, @Field_1 ... Field_n = ISNULL(@Field_n, Field_n, @Field_n) WHERE
id=@id

In questo modo basta valorizzare solo i paramtri (oltre all'id) che vogliamo modificare e omettere quelli non modificati. Il risultato è una chiamata compatta che non consuma banda inutile e che permette la concorrenza di update diversi di campi distinti.

Questa tecnica ha il limite non trascurabile di non poter Nullare un valore, pertanto è da utilizazre quando il progetto non prevede tale necessità.

Print | posted on domenica 12 novembre 2006 16:45

Comments have been closed on this topic.