Je vais avoir une table qui a environ 17 champs. Je dois effectuer des mises à jour fréquentes dans ce tableau. Mais le problème est chaque fois que je ne mets peut-être à jour que quelques champs . Quel est le meilleur moyen d'écrire une requête pour la mise à jour dans un tel scénario? Je recherche une option dans laquelle la valeur n'est mise à jour que si elle n'est pas nulle.
Par exemple, j'ai quatre champs dans la base de données Say A, B, C, D . L'utilisateur met à jour la valeur de say D. Toutes les autres valeurs restent les mêmes. Je souhaite donc une requête de mise à jour qui ne mette à jour que la valeur de D en conservant les autres inchangés . SO si je mets a, b et c comme null et d avec la valeur fournie par l'utilisateur je veux écrire une requête de mise à jour qui ne met à jour que la valeur de d comme a, b et c est null . c'est quelque chose de réalisable?
J'utilise la base de données SQLite.
Quelqu'un pourrait-il s'il vous plaît jeter un peu de lumière à l'intérieur?
Sans connaître votre base de données, il est difficile d'être spécifique. Dans SQL Server, la syntaxe ressemblerait à quelque chose comme ...
UPDATE MyTable
SET
Field1 = IsNull(@Field1, Field1),
Field2 = IsNull(@Field2, Field2),
Field3 = IsNull(@Field3, Field3)
WHERE
<your criteria here>
MODIFIER
Depuis que vous avez spécifié SQLLite ... remplacez ma fonction IsNull
par COALESCE()
ou regardez la fonction IfNull
.
UPDATE your_table
SET some_column = 42
WHERE some_column IS NOT NULL
Ne mettra à jour some_column que si ce n'est pas null
Publier une solution SQL Server avec 2 tables pour la postérité. Query joint deux tables et met à jour les valeurs présentes. Sinon, la valeur d'origine est conservée.
tables = table1, table2 ayant chacune champ1 et champ2
update t1 WITH (ROWLOCK)
set T1.Field2 = ISNULL(T2.Field2,T1.Field2)
from Table1 T1 Join Table2 T2
ON T1.Field1 = T2.Field1