59 votes

Mise à jour si différent/changement

Est-il possible d'exécuter une déclaration de mise à jour en sql, mais de ne mettre à jour que si les mises à jour sont différentes ?

par exemple

si dans la base de données, col1 = "hello"

update table1 set col1 = 'hello'

ne devrait pas effectuer tout type de mise à jour

toutefois, si

update table1 set col1 = "bye"

ce debe effectuer une mise à jour.

2voto

maxTrialfire Points 295

Vieille question mais aucune des réponses ne répond correctement null valeurs.

L'utilisation de <> ou != vous causera des problèmes lorsque vous comparez des valeurs pour des différences s'il y a des nullités potentielles dans la nouvelle ou l'ancienne valeur. Pour mettre à jour en toute sécurité uniquement en cas de changement, utilisez l'option is distinct from dans Postgres. Pour en savoir plus aquí

2voto

Tvitmsvleli Points 217
CREATE OR REPLACE PROCEDURE stackoverflow([your_value] IN TYPE) AS
BEGIN
   UPDATE   [your_table] t
     SET t.[your_collumn] = [your_value]
   WHERE t.[your_collumn] != [your_value];
  COMMIT;

EXCEPTION
 [YOUR_EXCEPTION];

END stackoverflow;

-1voto

Rajat Thapar Points 1

Je pense que ça devrait faire l'affaire pour vous...

create trigger [trigger_name] on [table_name]
for insert 
AS declare  @new_val datatype,@id int;
select @new_val = i.column_name from inserted i;
select @id = i.Id from inserted i;
update table_name set column_name = @new_val
where table_name.Id = @id and column_name != @new_val;

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X