2017-06-11 1 views
2

Ich brauche Zeile in der Tabelle nur aktualisieren, wenn Zeile vorhanden ist.PostgreSQL: UPDATE Zeile, wenn vorhanden

UPDATE table1 SET ctime = now() WHERE id = 112233; 

Oder mit select vor

IF EXISTS (SELECT 1 FROM table1 WHERE id = 112233) THEN 
    UPDATE table1 SET ctime = now() WHERE id = 112233; 
END IF; 

Welche bessere Schreiboperationen zu reduzieren abfragen?

Aus Leistungsgründen muss ich SELECT vor UPDATE ausführen, um zu überprüfen, ob die Zeile existiert?

Antwort

4

Diese Abfrage:

UPDATE table1 
    SET ctime = now() 
    WHERE id = 112233; 

tut genau das, was Sie wollen. Es aktualisiert alle Zeilen, die der WHERE-Bedingung entsprechen - über null Zeilen.

Wenn Sie Bedenken hinsichtlich der Leistung haben, erstellen Sie einen Index unter table1(id). Wenn id ein Primärschlüssel ist, hat es bereits einen Index.

+2

plus, es wird die Anzahl der Zeilen geändert, so dass Sie sehen können, ob Update tatsächlich etwas aktualisiert ... wenn Sie sich interessieren. – pbuck

Verwandte Themen